asp.net - 在 TextChanged 上停止回发

标签 asp.net asp.net-3.5 postback validation

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

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

关于asp.net - 在 TextChanged 上停止回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1524492/

相关文章:

c# - HttpClient 内存使用量激增且响应较大

c# - GridView.DataSource 在 PostBack 期间为 null

c# - 回发后 ViewState 变量重置

asp.net - CS0103 : The name 'Encoding' does not exist in the current context

c# - 无法访问 asp.net 中的嵌入式资源

c# - 动态向 DataTable 添加行

asp.net - 如何在 http 和 https 之间共享 asp.net session

html - 具有相同水平位置的div

c# - 如何使用 NHibernate 上传大文件?

c# - 运行 Visual Web Developer 2008 Express 时出错