[英]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>
我認為使用ajax和jquery來完成您的工作要比回發每個按鍵更好。
請檢查此鏈接以獲取更多詳細信息和示例。
另外, 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.