我在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>

最佳答案

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

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

更新

这是提示。

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

function IsValid( args ) {
        if( args.value.length == 0 ) {
            return false;
        }
        else {
            return true;
        }
    }


Page_Load事件中添加以下代码:

txtQuantity.Attributes[ "onchange" ] = "if ( IsValid(this) == false ) return;";


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

09-27 21:48