Enter键表单自动提交问题
来源:互联网 发布:青岛网络干部学院 编辑:程序博客网 时间:2024/05/16 18:41
最近做了一个系统,重新搭建了前端,采用jquery validate插件做表单验证。一切都进行的非常顺利。可是恶心的事情发生了,为了配套校验机制,在弹出框的搜索条件页,也用了form标签,仅仅是为了表单验证方便。但是当只有一个查询条件(text文本输入框)的时候,却发现只要输入条件按enter键,页面立马就跳转了,而且跳转的路径很奇怪,然后就出现404错误。
凭借直觉,不用说,就是enter键触发了表单提交。但是当前业务这样的表单,只是方便做校验,并非要与后台通信的。一番搜索,问题如下:
出现自动提交的情况,有两种可能:
一 、编写了javascript代码,当用户点按Enter键时,通过js事件侦听机制触发表单的提交。
二 、利用了浏览器的默认行为(至少发现ie是这样的)。浏览器在解析网页的时候,有许多默认的行为,例如如果一个页面上有表单和一个提交按钮,那么打开页面时,焦点会自动落在这个提交按钮上面。同样如果一个表单中只有一个单行文本输入域(text),那么在这个输入域中按Enter键时,浏览器会自动提交该表单。
我们对于第一种情况一般都知道而且很容易理解,但是对于第二种浏览器的默认行为,可能知道这一点的人就比较少了,下面我具体看一下浏览器(至少ie如此)在表单提交上的默认行为。
如果表单中含有一个单行文本输入域,那么无论含有多少其他类型的表单组件,那么在该输入域中点击Enter时,表单会自动提交。例如下面的代码:
<form action="" method="post"> <input type="text" name="sdfsdf" /> <textarea</textarea> <input type="checkbox" name='' /> <input type="hidden"name="aa" value='' /></form
解决的办法很简单,只要再添加一个文本输入框就可以了,可能你会说,为了不自动提交就要增加一个没有用的输入框,而且中含有两个输入框最终用户会接受吗? 其实可以解决,你可以将那个新添加的输入框通过style 隐藏即可,例如:
<form action="" method="post"> <input type="text" name="notautosubmit" style="display:none"/> <input type="text" name="username"/></form>
还有一个方法可以监听键盘按键,如果是keyCode=13,则选择性过滤事件的响应即可。
document.onkeypress = function(){ if(event.keyCode == 13) { return false; }}
- Enter键表单自动提交问题
- 禁用Enter键表单自动提交
- 禁用Enter键表单自动提交
- 禁用Enter键表单自动提交
- 禁用Enter键表单自动提交
- 按enter键表单自动提交
- HTML页面禁用Enter键自动提交表单
- HTML页面禁用Enter键自动提交表单
- 按enter键时如何避免表单自动提交
- 按Enter键时如何避免表单自动提交
- HTML页面禁用Enter键自动提交表单
- HTML页面禁用Enter键自动提交表单
- HTML页面禁用Enter键自动提交表单
- HTML页面禁用Enter键自动提交表单
- HTML页面禁用Enter键自动提交表单
- HTML页面禁用Enter键自动提交表单
- html表单enter键按下自动提交
- 取消enter键提交表单
- jQuery的三种bind/One/Live事件绑定使用方法
- 【整】jquery $(document).ready() 与window.onload的区别
- regSvr32 脚本注册避开“以管理员身份运行”权限注册失败的解决方法
- 【转】Bat 脚本学习
- 李开复:如何设计你的2015年度计划
- Enter键表单自动提交问题
- 谈谈javaScript 的trim()方法
- Java随机数的几种有趣用法
- 【原】ANTLR4权威参考手册(一)
- JavaScript学习总结(六)数据类型和JSON格式
- android如何让应用在后台跑
- php LFI读php文件源码以及直接webshell
- oracle 数据类型详解---日期型
- 优化网站设计(二十九):优化图片