<asp:TextBox ID="Textboxtotalamount" OnTextChanged="AmountChanged"
Width="90px" AutoPostBack="true" runat="server">
</asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator" runat="server"
ControlToValidate="Textboxtotalamount"
SetFocusOnError="True" ValidationGroup="val">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="Textboxtotalamount"
ValidationExpression="^[-+]?[1-9]\d{0,13}(\.\d{1,3})?%?$"
SetFocusOnError="True">F</asp:RegularExpressionValidator>
在上面的代码中可以正确验证.......但在文本框中我调用“OnTextChanged” 事件....假如我在文本框中键入(字符)errormesge同时显示ontextchanged事件也称为母鸡错误发生....我已经停止OnTextChanged事件时,regularrexpression提出...... 请帮忙
答案 0 :(得分:2)
我不确定我是否正确理解了您的问题:只有在验证者没有报告任何错误时才会执行`AmountChanged'代码,对吧?在这种情况下,您应该致电
if (!this.IsValid)
return;
在AmountChanged
的开头。 (如果OnTextChanged本身没有启动验证,那么可能需要首先调用this.Validate();
。)
详情请见:http://msdn.microsoft.com/en-us/library/dh9ad08f(VS.100).aspx
澄清:目前,您的代码如下所示:
void AmountChanged(...) {
...
}
您需要将其更改为:
void AmountChanged(...) {
if (!this.IsValid)
return;
...
}
以便在某个验证器检测到错误时不执行代码。此外,您必须将CausesValidation="true"
添加到TextBox,如Saar的示例所示。
答案 1 :(得分:2)
我更新了你的代码。看看这对你有帮助。
<asp:TextBox ID="Textboxtotalamount" OnTextChanged="AmountChanged" ValidationGroup="val"
Width="90px" AutoPostBack="true" runat="server" CausesValidation="true">
</asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator" runat="server" ValidationGroup="val"
ControlToValidate="Textboxtotalamount"
SetFocusOnError="True" >*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="Textboxtotalamount" ValidationGroup="val"
ValidationExpression="^[-+]?[1-9]\d{0,13}(\.\d{1,3})?%?$"
SetFocusOnError="True">F</asp:RegularExpressionValidator>