定期+必需的验证

时间:2009-11-24 11:06:47

标签: asp.net

<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提出...... 请帮忙

2 个答案:

答案 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>