簡體   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