或者它应该如此,重点是:如果只是告诉你它是无效的 将当前字段留空, 你可以完成其他领域并可能忘记那个......
点被清除。
现在,我想取消整个交易,我根本不会填写此表格!
幸运的是,有一个“取消”图像按钮
隐藏了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阶段 -
取消或提交
如果表格有效,提交即可。 如果您单击其中一个文本框
,则取消是不可选的你有什么办法可以想到吗?
答案 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(但是......)所以我认为这个代码可以重构/优化,所以它会更优雅,并接受任何作为参数给出的控制