我有一个RegularExpressionValidator控件,它可以检查文本框中的正确日期。
只有在插入数据时,我才需要选中该文本框。如果将其留空,则验证控制应允许进一步进行。但所有的时间控制都否认。
有一件事是,当我在文本框中输入错误的日期时,会出现错误消息,但是当我在输入错误的日期后输入正确的日期时,错误消息并没有消失。
我的代码是:
<label for="textarea">Birth Date</label><asp:TextBox
onkeypress="return isQuote(event);" ID="txtbdate"
onfocus="showCalendarControl(this);" onfocusout="return
validdate(document.form1.txtbdate.text);" CssClass="TextStyle1 uppercase"
runat="server"></asp:TextBox>
<asp:MaskedEditExtender ID="MaskedEditExtender11" runat="server"
TargetControlID="txtbdate" Mask="99-99-9999" MaskType="None" AutoComplete="true"
AcceptNegative="Left" ErrorTooltipEnabled="True" ClearMaskOnLostFocus="false"
ClearTextOnInvalid="True" />
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ErrorMessage="Enter Valid Date"
ValidationExpression="^(?:(?:(?:0?[1-9]|1\d|2[0-8])\/(?:0?[1-9]|1[0-2]))\/(?:(?:1[6-9]|
[2-9]\d)\d{2}))$|^(?:(?:(?:31\/0?[13578]|1[02])|(?:(?:29|30)\/(?:0?[1,3-9]|1[0-2])))
\/(?:(?:1[6-9]|[2-9]\d)\d{2}))$|^(?:29\/0?2\/(?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468]
[048]|[13579][26]))))$" ControlToValidate="txtbdate" Display="Dynamic"
ValidationGroup="Save" ForeColor="Red" Font-Bold="true" SetFocusOnError="true"
></asp:RegularExpressionValidator>
请帮帮忙......
先谢谢你...
发布于 2013-01-31 19:00:35
(如果这个答案不正确,请告诉我。虽然,从你的评论中,我认为这是你的问题)
您需要在检查条件后启用您的Validator
;如下所示:
if (txtBdate.Text.Substring(0, 2) != " .") { // not sure why you do this?
RegularExpressionValidator1.Enabled = true;
}
现在,您需要验证页面。您可以调用以下命令来执行此操作:
Page.Validate(); // <--- this
if (Page.IsValid) {
// etc..
}
else {
// not valid..
}
我确信Page.IsValid
会遍历页面中的每个Validator
并检查其有效性,因此您可能不需要调用Page.Validate()
。
https://stackoverflow.com/questions/14622250
复制相似问题