[英]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.