这个问题是由测试中发现的一个Bug引出来的。
Bug具体描述如下:
在输入框中输入内容,按回车键,默认焦点聚焦在入口菜单上。
如果开始点击'查询'按钮,以后再输入条件,然后回车的话,焦点定位是没问题的。
经查,之所以引起这个Bug,实际上是因为页面上只有一个input type="text",后来google了一下,发现了《在 IE下,页面只有一个text的时候,回车将自动submit》这篇文章,原来当只有一个text框时,按回车会自动提交。该文同时还提到“即使在这个页面中增加file,checkbox,hidden等的控件,这个页面还是会自动提交。这是IE的一个缺省操作。如果想改变这个缺省操作,可以再增加一个text,然后隐藏这个text”。注意,这里的隐藏是指必须是增加一个input type="text",然后将它隐藏,而不是使用input type="hidden",因为使用hidden没有用,还是会提交。
于是,开始寻找解决方法。首先,隐藏text,这个方法有点取巧,所以先不考虑。接下来就需要再想别的办法。于是我尝试了给那个唯一的text增加onkeydown方法,如下:
function enterDown(evt){
var evt = window.event?window.event:evt;
if(evt.keyCode==13)
{
//validate and submit
}
}
可是不管onkeydown方法如何返回,页面总是会提交。而且,提交的时候还有一个现象就是,它总是以上一次执行过的action来提交(注:FORM里面没有指定action,而是在js里面执行的form.submit)。因此,当第一次进入界面时,是通过一个action1进来的,这时按回车,它总是提交这个action1,当点击了“查询”按钮后,执行了另一个action2,以后再按回车,就会提交action2。这个现象太让人发指了,因为它自动提交的时候会直接执行form.submit,从而绕开你的validate方法。这时,我试着将onkeydown方法中的"validate and submit"改成了"document.all.querybtn.focus();",问题竟然解决了。这种情况下,它的行为变成执行querybtn所指定的onclick方法了。说实话,虽然解决了问题,但真不知道为什么会这样,这就要问IE了。
类似的,还有一个界面,上面也是只有一个input type="text",但是这个text添加了一个日期控件,这时现象又不一样了。当第一次进入界面时,是通过一个action1进来的,这时按回车,它总是提交这个action1,当点击了“查询”按钮后,执行了另一个
action2,以后再按回车,页面不自动提交了。虽然现象不一样,但用上面的方法还是可以解决。就是当焦点设置到某个按钮上时,它的行为变成执行querybtn所指定的onclick方法了。
分享到:
相关推荐
遇到一件让人很郁闷的事,在页面上的一个text元素里添加了一个回车自动发送ajax的事件,可是每次回车它都会自动提交表单并刷新页面
C#实现回车光标自动跳到下一个控件的几种方法
ie ,火狐 文本框回车自动提交,在网页开发中经常会遇到
按回车键时跳到下一个表单元素的javascript代码 <br>函数说明:按回车键时跳到下一个表单元素 JumpToNextElement() 用于按回车键时跳到下一个表单元素(统一处理按回车键的问题) 在页面调用: <script ...
DataGridView中,输入数据,按回车,自动跳到下一列
VSCODE开发时,如果遇到在在大括号中回车不自动换行缩进,可以用本方法来解决,本人亲自总结的经验,分享给大家。简单2步,轻松解决!!!
<br/>有了VS2005,这个问题似乎一下子变得容易解决了,因为在VS2005的页面中,每个Panel都可以指定一个DefaultButton。我们可以把这个DefaultButton设置成“保存”按钮,这样当用户按下回车时会自动触发“保存...
easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格
一个列表界面只有一个输入框查询条件,当首次进入在输入框中输入汉字后,按回车键发现输入框中汉字变成乱码!本以为一个很简单不过的问题,结果却花了好久才找到原因(据说是浏览器问题),按回车后执行了两次查询。...
form中的input只有一个,input获得焦点时按回车会form自动提交: <!doctype html> <html> <head> <meta charset="UTF-8"> <title>test</title> </head> <body> <...
CMD自动运行Python VBS脚本 自动改名,自动执行,自动输入 批处理不支持向控制台输入回车
jquery标签回车自动完成
CS2005中winfrm解决输入法自动全角到半角转换 回车光标到下一个控件
1.form表单中只有一个input标签,按回车键将自动提交表单 ...按下回车将不会自动提交,但是页面上显示一个不知所云的输入框挺别扭,后从网上搜到两个解决办法: (1) 添加一个<input type=’text’
简单的几句代码就可以把text控件的回车键声音去除
本文本是vba编写的段落连接模块,放入宏里就可使用,使用时只要将一个段落的行选上,运行本模块就可以自动连成一个段落,并且可以将两端空格去掉;如果是英文,两行连接时会在两单词之间自动加上空格;默认段落格式...
按回车自动跳行不需编程,不需要写一个代码!
动态链接库 按回车键 自动转换焦点 动态链接库 按回车键 自动转换焦点 动态链接库 按回车键 自动转换焦点
利用IE上网时,只要在地址栏中输入几个字母,与这几个字母模糊匹配的地址就会自动显示出来供用户选择(如下图),用户通过按键盘上的上、下箭头在已有选项中遍历,找到自己需要的选项后,按回车键进行选择,也可以...