<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“事件....suppose同时显示OnTextChanged事件也称为error ....i ....i ve to stop OnTextChanged event when regularexpression引发......请帮帮忙
发布于 2009-11-24 19:26:33
我更新了你的代码。看看这对你有没有帮助。
<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>发布于 2009-11-24 19:17:28
我不确定我是否正确理解了您的问题:您只想在验证器没有报告任何错误的情况下执行‘`AmountChanged’代码,对吗?在这种情况下,您应该调用
if (!this.IsValid)
return;在AmountChanged的开头。(如果this.Validate();本身不启动验证,则可能需要先调用OnTextChanged。)
详情可在此处找到:http://msdn.microsoft.com/en-us/library/dh9ad08f(VS.100).aspx
澄清:目前,您的代码如下所示:
void AmountChanged(...) {
...
}您需要将其更改为:
void AmountChanged(...) {
if (!this.IsValid)
return;
...
}这样当某个验证器检测到错误时,代码就不会执行。此外,您必须将CausesValidation="true"添加到您的TextBox中,如Saar的示例所示。
https://stackoverflow.com/questions/1789360
复制相似问题