C# 仅当满足某些条件时才触发asp.net TextChangedEvent?

C# 仅当满足某些条件时才触发asp.net TextChangedEvent?,c#,asp.net,C#,Asp.net,如果我在asp.net文本框上连接了一个TextChanged事件,那么每次我添加/删除一个字符时它都会触发。只有当且仅当文本框满足某些条件(如文本框的非空字符串大于5个字符)时,才可以触发它。为什么不在事件处理程序中检查文本框的内容,并且仅当文本框的长度大于5个字符时才继续?我认为最好的方法是,如果您担心回发成本,那么最好为onchange事件提供一个javascript事件处理程序。在该javascript函数中,您可以快速检查长度是否大于5,然后执行一些操作回发到服务器(例如,javasc

如果我在asp.net文本框上连接了一个TextChanged事件,那么每次我添加/删除一个字符时它都会触发。只有当且仅当文本框满足某些条件(如文本框的非空字符串大于5个字符)时,才可以触发它。

为什么不在事件处理程序中检查文本框的内容,并且仅当文本框的长度大于5个字符时才继续?

我认为最好的方法是,如果您担心回发成本,那么最好为onchange事件提供一个javascript事件处理程序。在该javascript函数中,您可以快速检查长度是否大于5,然后执行一些操作回发到服务器(例如,javascript函数可以单击回发的隐藏按钮,尽管还有其他方法)

示例(使用jQuery):

首先,javascript:

    function checkTextBox() {
    var textBox = $('#<%=tbTest.ClientID %>');
    var hiddenButton = $('#<%=hdnButton.ClientID %>');
    if (textBox.val().length > 5)
        hiddenButton.click();
}
函数复选框(){
var textBox=$(“#”);
var hiddenButton=$(“#”);
如果(textBox.val().length>5)
hiddenButton.click();
}
然后,这些是ASP.NET控件:

<asp:TextBox runat="server" ID="tbTest" 
 AutoPostBack="false" onchange="checkTextBox()" ></asp:TextBox>
<asp:Button runat="server" ID="hdnButton" style="visibility:hidden" />


此事件仅在您单击文本框后触发。如果您想让它在他们键入时发生,您可以将其更改为另一个事件,如onkeyup。

我考虑过这一点,但我很好奇是否可能根本不触发它,所以甚至不必进入该方法。@Xaisoft当文本框的内容在发送到服务器的过程中发生更改时,会发生此事件。”我不知道有什么方法可以阻止此事件被触发。确实,当有回发时,此事件将始终触发,但如果文本框的“自动回发”设置为false,则不会由于文本更改而回发。它只会在其他原因导致回发时触发TextChanged事件。我也考虑过这一点,但我不知道如何做。你有一个例子吗?