我想在输入字符时更改与textbox相同的标签值。那么这里有一个问题?我如何在回发后保持文本框光标?例如,我输入'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.ocus(),但文本框光标位置将从第一个字符开始:(
发布于 2011-12-15 13:14:39
您需要做的是处理表单(或文档)的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
发布于 2011-12-15 13:13:23
我强烈建议您查看一些可用的jquery插件。在google上快速搜索jquery autocomplete会返回大量的选项。这里有一个可以帮你入门的。
http://jqueryui.com/demos/autocomplete/
https://stackoverflow.com/questions/8515229
复制相似问题