我尝试对用户输入的时间信息强制执行15分钟的粒度。例如,中午12:15、凌晨3:45和上午9:30都是可以接受的,但下午2:35是不允许的。服务器端验证是有效的,但是如果用户在单击submit按钮之前,在文本框失去焦点时被告知他们的输入是无效的,那就更好了。代码如下:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="True" UpdateMode="Always">
<ContentTemplate>
<asp:TextBox ID="txtStartTime" runat="server" AutoPostBack="True" CausesValidation="True"/>
<Ajax:MaskedEditExtender ID="txtStartTime_MaskedEditExtender" runat="server"
TargetControlID="txtStartTime" MaskType="Time" AcceptAMPM="True"
Mask="99:99">
</Ajax:MaskedEditExtender>
<asp:RequiredFieldValidator runat="server" ID="StartTimeRequired"
ValidationGroup="EventAddEditControls" ControlToValidate="txtStartTime"
EnableClientScript="True" SetFocusOnError="True">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ErrorMessage="Invalid time format." ControlToValidate="txtStartTime"
ValidationGroup="EventAddEditControls" SetFocusOnError="True"
EnableClientScript="True" Text="Invalid time format."
ValidationExpression="^([1-9]|0[1-9]|1[012]):(00|15|30|45)\s?[aApP]\.?[mM]\.?$" />
<Ajax:MaskedEditValidator ID="MaskedEditValidator1" ControlToValidate="txtStartTime"
ControlExtender="txtStartTime_MaskedEditExtender" IsValidEmpty="False"
ValidationGroup="EventAddEditControls"
ValidationExpression="^([1-9]|0[1-9]|1[012]):(00|15|30|45)\s?[aApP]\.?[mM]\.?$"
EnableClientScript="True" SetFocusOnError="True" Text="Time format is invalid."
runat="server"></Ajax:MaskedEditValidator>
</ContentTemplate>
</asp:UpdatePanel>我怎样才能让MaskedEditExtender在客户端也执行15分钟的粒度限制(假设这是可能的)?
发布于 2012-11-21 14:00:26
这看起来过于简单,但它似乎是有效的。
我做的第一件事就是注释掉RegularExpressionValidator --您并不需要同时使用这个和MaskedEditValidator。为了证明这一点,请应用下面的修复,但不要注释掉RegularExpressionValidator。在验证失败时,您将看到这两个错误。
最后一件事是用InvalidValueMessage属性替换MaskedEditValidator的Text属性:
<Ajax:MaskedEditValidator ID="MaskedEditValidator1" ControlToValidate="txtStartTime"
ControlExtender="txtStartTime_MaskedEditExtender" IsValidEmpty="False"
ValidationGroup="EventAddEditControls"
ValidationExpression="^([1-9]|0[1-9]|1[012]):(00|15|30|45)\s?[aApP]\.?[mM]\.?$"
EnableClientScript="True" SetFocusOnError="True"
InvalidValueMessage="Time format is invalid." runat="server">
</Ajax:MaskedEditValidator>This example给了我关于要使用的正确属性的提示。
执行这两项操作都会导致在跳出控件时进行验证。这也表明MaskedEditValidator一直在验证。
https://stackoverflow.com/questions/13421092
复制相似问题