繁体   English   中英

正则表达式验证控件禁用运行时

[英]Regular Expression Validation Control Disable Runtime

我有一个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>

请帮忙........

提前致谢...

(如果这个答案不正确,请让我知道。尽管,根据您的评论,我认为这是您的问题)

您需要在检查条件之后启用您的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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM