问题描述
vs2010创建的WEB页面上有一个Button,三个TextBox放在UpdatePanel中,当按回车键时,焦点会在文本框之间切换(用jQuerys实现)具体页面代码如下:<htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title><scripttype="text/javascript"src="../JS/jquery.js"></script><scriptlanguage="javascript"type="text/javascript">$(function(){$("input:text").keydown(function(e){//alert(e.which);if(e.which==13){//获取Enter键值e.preventDefault();//阻止表单按Enter键默认行为,防止按回车键提交表单varnextIndex=$("input:text").index(this)+1;$("input:text")[nextIndex].focus();}});});</script></head><body><formid="form1"runat="server"><div><asp:ButtonID="Button1"runat="server"onclick="Button1_Click"Text="Button"/><asp:ScriptManagerID="ScriptManager1"runat="server"></asp:ScriptManager><asp:UpdatePanelID="UpdatePanel1"runat="server"><ContentTemplate><asp:TextBoxID="TextBox3"runat="server"></asp:TextBox><br/><asp:TextBoxID="TextBox1"runat="server"AutoPostBack="True"ontextchanged="TextBox1_TextChanged"></asp:TextBox><br/><asp:TextBoxID="TextBox2"runat="server"></asp:TextBox></ContentTemplate></asp:UpdatePanel></div></form></body></html>服务器端代码:protectedvoidTextBox1_TextChanged(objectsender,EventArgse){TextBox2.Text=TextBox1.Text;TextBox1.Text="";TextBox3.Text="";TextBox3.Focus();}protectedvoidButton1_Click(objectsender,EventArgse){Response.Write("<scriptlanguage='javascript'defer>alert('test!');</script>");}当在TextBox1输入:测试后,按回车键,触发TextBox1_TextChanged事件,TextBox3获得焦点后:问题一:此时在TextBox3中的中文输入法无效,只能输入英文;问题二:此时光标在TextBox3中,按回车键,焦点本应该转移到TextBox1上,结果却是触发了Button1_Click事件。具体不知是何原因,忘各位高手指点,谢谢!
解决方案
解决方案二:
以前没有用过UpdatePanel,忘各位高手指点!
解决方案三:
去掉UpdatePanel调试
解决方案四:
看你实现,好像并不需要updatePanel。况且对于updatepanel,我只能说,了解一下,以后不要用了。哈哈asp.net的ajax控件,已经淘汰挺久了,不更新了。
解决方案五:
@xiaojie_cp:去掉UpdatePanel测试是没有问题的
解决方案六:
引用3楼hanjun0612的回复:
看你实现,好像并不需要updatePanel。况且对于updatepanel,我只能说,了解一下,以后不要用了。哈哈asp.net的ajax控件,已经淘汰挺久了,不更新了。
这只是测试,我实际上是将两个文本框中的内容作为一条记录,添加到GridView中,不用updatePanel,那用什么好呢?
解决方案七:
ajax自己提交,获取数据前台自己拼接。
解决方案八:
有没有人遇到这种情况?
解决方案九:
自己顶一个!
解决方案十:
引用6楼hanjun0612的回复:
ajax自己提交,获取数据前台自己拼接。
这种方法是可以,但有点麻烦,主要是想用GridView这个控件方便些。