代码:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div>
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" TabIndex="9"></asp:TextBox>
<asp:TextBox ID="TextBox3" runat="server" TabIndex="10"></asp:TextBox>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>
后台:
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
TextBox2.Text = DateTime.Now.ToString();
ScriptManager.RegisterClientScriptBlock(this.UpdatePanel1, this.GetType(), "show1","document.getElementById('TextBox3').focus();", true);
}
这样写TextBox1输入内容改变后,焦点到不了TextBox3,但是在document.getElementById('TextBox3').focus();加个alert('1');又可以。在网上查到focus方法延迟触发,放在setTimeout中也不行;就是setTimeout(function() {document.getElementById('TextBox3').focus();},200); 同样在前面加个alert又可以
事件的触发机制是失去焦点之后触发的,而不是在按键点击前后发生。
你想实现什么效果,直接说问题吧!
就是 TextBox1 触发服务端事件 TextChanged, TextBox3得到焦点
@999999999999999: TextBox1 的文本内容改变后,你点击一下空白处会触发吗?
设置UpdatePanel的UpdateMode="Always"试试呢