ajax MaskedEditValidator isValidEmpty禁用所有web控件

时间:2012-10-10 23:10:54

标签: asp.net ajax web-controls

或者它应该如此,重点是:如果只是告诉你它是无效的 将当前字段留空, 你可以完成其他领域并可能忘记那个......

点被清除。

现在,我想取消整个交易,我根本不会填写此表格!

幸运的是,有一个“取消”图像按钮

隐藏了form但它也被禁用了

除了假装你要填写表格,然后在invalidEmpty-Error清除后立即点击取消,是否还有其他工作?

MaskedEditExtender

<cc1:MaskedEditExtender enabled="true" MaskType="Date" ID="insertDate_MaskedEditExtender" runat="server"
    TargetControlID="TBXinsertDate"  InputDirection="LeftToRight"  CultureName="en-GB" 
    UserDateFormat="None" Mask="99/99/9999" MessageValidatorTip="true"  OnFocusCssClass="maskedFocus" ErrorTooltipEnabled="true" ErrorTooltipCssClass="toolTipForInvalid"
</cc1:MaskedEditExtender>

MaskedEditValidator

<cc1:MaskedEditValidator Enabled="false" IsValidEmpty="false" ID="insertDate_MskValidator"  ControlExtender="insertDate_MaskedEditExtender" ControlToValidate="TBXinsertDate" runat="server"
    InvalidValueBlurredMessage="invalid date" EmptyValueBlurredText="requierd fileld"  ErrorMessage="Error" 
    MaximumValue="01/01/2015" MinimumValue="01/01/2008" MinimumValueBlurredText="please enter year above 2008" MaximumValueBlurredMessage="max year value is 2015" 
    CssClass="dateInValid">
</cc1:MaskedEditValidator>

验证程序Enabled = false的默认状态,因为我将其从代码隐藏事件的onClick转为启用。

  insertDate_MskValidator.Enabled = true;

第1阶段 -

validator-enabled = false

表单已隐藏

第2阶段 -

validator-enabled = true +表格可见

第3阶段 -

取消或提交

如果表格有效,

提交即可。 如果您单击其中一个文本框

,则取消是不可选的

你有什么办法可以想到吗?

2 个答案:

答案 0 :(得分:1)

<asp:TextBox ID="tbEffectiveTo" runat="server" Text='<%# Bind("EffectiveTo", "{0:MM/dd/yyyy}")%>' Width="8em" ToolTip="MM/DD/YYYY"></asp:TextBox>
<ajaxToolkit:MaskedEditExtender ID="meeEffectiveTo" runat="server" TargetControlID="tbEffectiveTo" Mask="99C99C9999" MessageValidatorTip="true" OnFocusCssClass="MaskedEditFocus"  OnInvalidCssClass="MaskedEditError" MaskType="None" ClearMaskOnLostFocus="false" Filtered="/" PromptCharacter=" " />
<ajaxToolkit:MaskedEditValidator ID="mevEffectiveTo" runat="server" ControlExtender="meeEffectiveTo" ControlToValidate="tbEffectiveTo" Display="Dynamic" IsValidEmpty="true" ValidationExpression="^\s{10}|(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/(20\d\d)$" InvalidValueMessage="Invalid Date"></ajaxToolkit:MaskedEditValidator>
<ajaxToolkit:CalendarExtender ID="ceEffectiveTo" runat="server" Enabled="True" TargetControlID="tbEffectiveTo" CssClass="EffectiveDateCalendar" Format="MM/dd/yyyy"></ajaxToolkit:CalendarExtender>

答案 1 :(得分:0)

我找到了一种非凡的方式(所以我想!) 如此绕过它  您现在可以使用验证属性 - isValidEmpty=false(当前字段是必填字段)

但是现在你仍然可以在字段为空时取消表单,即使默认情况下它不可用

解决了以下问题:当离开空字段时,会导致周围控件被禁用。

我需要做的就是当onblur的事件触发验证时

我正在将一个函数绑定到target textbox onblur()执行setTimeOut函数,该函数执行延迟以禁用Validator,如下所示:

   function setTDisableValidation() {
        setTimeout('disableValidation()', 3500);
    }

    function disableValidation() {
        var myVal = document.getElementById('insertDate_MskValidator');
        myVal.disabled = true;
        myVal.ValidEmpty = true;

    }

            <asp:TextBox ID="TBXinsertDate" runat="server" ToolTip="insert date" Width="76px" onblur="setTDisableValidation();">
                    </asp:TextBox>

我不是一个javascript专家,即使在asp.net(但是......)所以我认为这个代码可以重构/优化,所以它会更优雅,并接受任何作为参数给出的控制