0

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

点被清除。

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

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

隐藏 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 -

启用验证器 = false

表格被隐藏

阶段 2 -

启用验证器 = true + 表单可见

第 3 阶段 -

取消或提交

如果表格有效,则提交即可。如果您进入其中一个文本框,则无法取消

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

4

2 回答 2

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>
于 2014-04-29T17:05:54.313 回答
0

我找到了一种非凡的方法(所以我认为!)来解决它,因此您现在可以使用 Validation 属性 - isValidEmpty=false (当前字段是必填字段)

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

修复了:留空字段时,导致周围控件被禁用的问题。

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

我将一个函数绑定到target textbox onblur()执行一个setTimeOut执行延迟以禁用验证器的函数,如下所示:

   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 中也不是(还......)所以我认为这段代码可以重构/优化,所以它会更优雅,并且可以接受作为参数给出的任何控制

于 2012-10-11T01:10:39.957 回答