在 TextChanged 上停止回发

Dan*_*nte 5 asp.net validation postback asp.net-3.5

我在 aspx 页面中有一个文本框,它附加了一个 TextChanged 事件。我还有一个附加到文本框的验证器。

当文本更改时,验证会触发,但如果出现错误,仍会调用 textchanged 事件。你知道如果验证器触发是否可以停止 textchanged 的​​回发?

<asp:TextBox ID="txtQuantity" runat="server" AutoPostBack="true" ontextchanged="txtQuantity_TextChanged"></asp:TextBox>
<asp:RequiredFieldValidator ID="reqQuantity" ControlToValidate="txtQuantity" runat="server" ErrorMessage="The quantity is mandatory."></asp:RequiredFieldValidator>
Run Code Online (Sandbox Code Playgroud)

ter*_*R0Q 5

您可以将验证移至客户端添加EnableClientScript="true"属性。由于将使用 JS 进行检查,因此不会发生回发。

除此之外,您可以在执行 TextChanged 事件的回调函数时检查页面是否有效,以便定义函数是否可以继续进行。您应该ValidationGroup向验证器添加属性,并在检查Page.Validate之前调用指定该组的函数。Page.IsValid

更新

这是提示。

添加你自己的JS函数,例如:

function IsValid( args ) {
        if( args.value.length == 0 ) {
            return false;
        }
        else {
            return true;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Page_Load事件中添加此代码:

txtQuantity.Attributes[ "onchange" ] = "if ( IsValid(this) == false ) return;";
Run Code Online (Sandbox Code Playgroud)

当输入正确时,这不会扰乱自动回发,但否则会阻止回发。