我正在尝试添加搜索功能,其中网站向服务器发送请求以在每次用户输入文本时逐字收集信息(逐字母)。为此,我需要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事件”更好的解决方案来获得每次按键和搜索框?
答案 0 :(得分:3)
启用autopostback true ..
<asp:TextBox AutoPostback="true" ID="futu_search" type="text" spellcheck="false" placeholder="Search" OnTextChanged="futu_search_TextChanged" runat="server"></asp:TextBox>
如果您想在用户按键时触发事件,则必须使用java脚本** onkeyup ** event
<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>
答案 1 :(得分:0)
我认为最好使用 ajax 和 jquery 来完成你想要完成的工作,而不是每次按下回发。
请查看this LINK了解更多详情和示例。
此外, OnTextChanged 事件会在您失去焦点时触发,而不是在您键入时触发,这似乎是您的要求。
来自CodeProject的回答:
TextChanged:“当文本框的内容之间发生变化时发生 发布到服务器。“AutoPostBack:”使用AutoPostBack属性 指定何时会自动回发到服务器 TextBox控件失去焦点。按ENTER或TAB键 而在TextBox控件中是更改焦点的最常用方法。“
示例代码:
来源: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中的“退格”而开火。 Sample Fiddle
如果您仍然对OnKeyPress感兴趣,我建议您查看此SO Question。
This就是你要做的,但问题是旧的和更新的,更好的事情就像HTML 5一样。
注意:如果您使用右键单击=&gt;,则不会触发使用on KeyUp事件粘贴。要查看此处是一个提琴手link。
答案 2 :(得分:0)
首先,OnTextChanged
事件不会触发,因为默认情况下其AutoPostBack
属性为false。所以为了实现它,请将其值设置为true。
OnTextChanged
事件只会在文本框焦点丢失时触发。因此,在这种情况下,您可以使用 AJAX 来获取值。
为此,您可以使用onkeyup
在每个有人值守的输入中获取javascript函数中的值。
答案 3 :(得分:0)
您可以使用以下代码设置焦点:
ScriptManager sm = ScriptManager.GetCurrent(this);
sm.SetFocus(myTextBox);
要设置焦点并选择您必须使用以下内容的文本:
ScriptManager.RegisterStartupScript(this, this.GetType(), "selectAndFocus", "$get('" + myTextBox.ClientID + "').focus();$get('" + myTextBox.ClientID + "').select();", true);
答案 4 :(得分:-1)
在控制标记中包含Autopost返回标记。的的AutoPostBack = “真”强>
<asp:TextBox AutoPostback="true" ID="txtcontrol" OnTextChanged="txtcontrol_TextChanged" runat="server"></asp:TextBox>