繁体   English   中英

未触发ASP.NET TextBox OnTextChanged事件

[英]ASP.NET TextBox OnTextChanged Event not fired

我正在尝试添加搜索功能,该网站在用户每次输入文本(逐字母)时向服务器发送请求以收集信息。 为此,我需要OnTextChanged事件吗? 我尝试使用它,但该事件不会触发。

<asp:TextBox ID="futu_search" type="text" spellcheck="false" placeholder="Search" OnTextChanged="futu_search_TextChanged"  runat="server"></asp:TextBox>

我的代码后面:

protected void futu_search_TextChanged(object sender, EventArgs e)
{
       //I kept a break point here to see if it's fired
       //Send requests
}

你觉得错什么? 与“ OnTextChanged事件”相比,yall是否有更好的解决方案来获取每个按键并用于搜索框?

启用自动回传true ..

<asp:TextBox AutoPostback="true" ID="futu_search" type="text" spellcheck="false" placeholder="Search" OnTextChanged="futu_search_TextChanged"  runat="server"></asp:TextBox>

如果要在用户按下键时触发事件,则必须使用Java脚本** onkeyup **事件

<asp:TextBox onkeyup ="return abc(event)" AutoPostback="true" ID="futu_search" type="text" spellcheck="false" placeholder="Search" OnTextChanged="futu_search_TextChanged"  runat="server"></asp:TextBox>


<script>
function abc(evt) {

         ..put here your logic
        }
</script>

我认为使用ajaxjquery来完成您的工作要比回发每个按键更好。

请检查此链接以获取更多详细信息和示例。

另外, OnTextChanged事件会在您失去焦点而不是键入时触发,这似乎是您的要求。

CodeProject中的答案:

TextChanged:“在服务器的帖子之间文本框的内容更改时发生。” AutoPostBack:“使用AutoPostBack属性指定当TextBox控件失去焦点时是否将自动回发到服务器。在TextBox控件中按ENTER或TAB键是更改焦点的最常见方法。”

样例代码

来源https : //jqueryui.com/autocomplete/

<script>
  $(function() {
    var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++",
      "Clojure",
      "COBOL",
      "ColdFusion",
      "Erlang",
      "Fortran",          
      "Scala",
      "Scheme"
    ];
    $( "#tags" ).autocomplete({
      source: availableTags
    });
  });
  </script>
</head>
<body>

<div class="ui-widget">
  <label for="tags">Tags: </label>
  <input id="tags">
</div>

重要提示 :如果您仍打算使用按键,请阅读下面的报价,

在onKeyPress期间,输入文本框的值始终是更改前的值。

另外,它不会为Chrome中的“退格键”触发。 样品小提琴

如果您仍然对OnKeyPress感兴趣,建议您看看此SO Question

是您正在尝试做的事情,但问题是古老而又新的,更好的事情已经出现,例如HTML 5。

注意 :如果使用右键单击=>粘贴,则不会触发在KeyUp事件上使用。 要检查这里是Fiddler 链接

首先, OnTextChanged事件不会触发,因为其AutoPostBack属性默认情况下为false。 因此,要使其实现,请将其值设置为true。

并且OnTextChanged事件将仅在文本框焦点丢失时触发。 因此,在这种情况下,您可以使用AJAX来获取值。

为此,您可以使用onkeyup在每个字符输入处的javascript函数中获取值。

您可以使用以下代码来设置焦点:

ScriptManager sm = ScriptManager.GetCurrent(this);
sm.SetFocus(myTextBox);

要设置焦点并选择的文本,您必须使用以下命令:

ScriptManager.RegisterStartupScript(this, this.GetType(), "selectAndFocus", "$get('" + myTextBox.ClientID + "').focus();$get('" + myTextBox.ClientID + "').select();", true);

在控件标签中包含自动回发标签。 的AutoPostBack = “真”

<asp:TextBox AutoPostback="true" ID="txtcontrol"  OnTextChanged="txtcontrol_TextChanged"  runat="server"></asp:TextBox>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM