我想在输入字符时更改与文本框相同的标签值。所以这里有一个问题?如何在回发后维护文本框光标?例如我输入'ab'。文本框光标位置将保留在最后一个字符“b”
这是我的编码
<script language="javascript" type="text/javascript">
function RefreshUpdatePanel() {
__doPostBack('<%= TextBox1.ClientID %>', '');
};
</script>
<asp:UpdatePanel ID="UpdatePanel3" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<br />
<br />
<asp:TextBox ID="TextBox1" runat="server" onkeyup="RefreshUpdatePanel();"
ontextchanged="TextBox1_TextChanged"></asp:TextBox>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="TextBox1" />
</Triggers>
</asp:UpdatePanel>
</ContentTemplate>
</asp:UpdatePanel>
我的后端代码
protected void Page_Load(object sender, EventArgs e)
{
//--If post back is txtSearach , then do search function--
if (Page.Request.Form["__EVENTTARGET"] == TextBox1.ClientID)
{
this.Label1.Text = this.TextBox1.Text;
}
}
我也尝试在回发事件时放置textbox1.focus(),但文本框光标位置将从第一个字符开始:(
答案 0 :(得分:0)
我强烈建议您查看一些可用的jquery插件。快速谷歌搜索 jquery autocomplete 将返回相当多的选项。这是一个让你入门的。
答案 1 :(得分:0)
您需要做的是处理表单(或文档)的onsubmit
事件,然后将当前插入位置存储在隐藏字段中。在服务器上,读取隐藏字段值,然后生成启动脚本以设置插入符号位置。棘手的位置正在设置插入位置 - 下面的链接将帮助你解决这个问题:
http://parentnode.org/javascript/working-with-the-cursor-position/
jQuery Set Cursor Position in Text Area
Set keyboard caret position in html textbox
说了这些,我建议你重新构建你的解决方案。您应该使用脚本服务(或页面方法)对服务器进行ajax调用以获取搜索结果,而不是将更新面板部分回发文本更改。它会更简单,优雅和高效。以下链接可以帮助您入门:
http://encosia.com/using-jquery-to-consume-aspnet-json-web-services/
http://www.codeproject.com/KB/aspnet/jQuery_To_WCF.aspx
http://msdn.microsoft.com/en-us/magazine/cc163499.aspx