一个列表界面只有一个输入框查询条件,当首次进入在输入框中输入汉字后,按回车键发现输入框中汉字变成乱码!本以为一个很简单不过的问题,结果却花了好久才找到原因(据说是浏览器问题),按回车后执行了两次查询。
1、未修改前代码:
<form id="ff" name="ff" method="post"> <input type="text" id="userName" name="userName" size="12" maxlength='30' value="${(data.userName)!''}" onKeypress= "javascript:if(event.keyCode==13) do_postAuditList_search();"/> </form>
2、修改后代码:
<form id="ff" name="ff" method="post"> <input type="text" id="userName" name="userName" size="12" maxlength='30' value="${(data.userName)!''}" onKeypress= "javascript:if(event.keyCode==13) do_postAuditList_search();"/> <!--解决form表单在只有一个input输入框时回车会自动提交表单--> <input style='display:none' /> </form>
即:添加一个<input type='text' style='display:none'/>
不显示输入框,然后回车之后也不会提交。
补允:
出现自动提交的情况,有两种可能:
一是编写了javascript代码,当用户点按Enter键时,通过js事件侦听机制触发表单的提交。
二是利用了浏览器的默认行为(至少发现ie是这样的)。浏览器在解析网页的时候,有许多默认的行为,例如如果一个页面上有表单和一个提交按钮,那么打开页面时,焦点会自动落在这个提交按钮上面。同样如果一个表单中只有一个单行文本输入域(text),那么在这个输入域中按Enter键时,浏览器会自动提交该表单。
我们对于第一种情况一般都知道而且很容易理解,但是对于第二种浏览器的默认行为,可能知道这一点的人就比较少了,下面我具体看一下浏览器(至少ie如此)在表单提交上的默认行为。
如果表单中含有一个单行文本输入域,那么无论含有多少其他类型的表单组件,那么在该输入域中点击Enter时,表单会自动提交。例如下面的代码:
<form action="" method="post"> <input type="text" name="sdfsdf"/> <textarea></textarea> <input type="checkbox">sdfsdf <input type="hidden" name="aa"/> </form>
如果表单中含有两个或多个单行文本输入域,那么无论是否含有其他类型的表单组件,按Enter键时不会自动提交,例如:
<form action="" method="post"> <input type="text" name="sdfsdf"/> <input type="text" name="sddf"/></form>
办法很简单,我们上面举的例子中已经有了,只要再添加一个文本输入框就可以了,可能你会说,为了不自动提交就要增加一个没有用的输入框,而且中含有两个输入框最终用户会接受吗?其实可以解决,你可以将那个新添加的输入框通过style隐藏即可,例如:
<form action="" method="post"> <input type="text" name="notautosubmit" style="display:none"/> <input type="text" name="username"/> </form>
还有一个方法可以绑定button按钮 enter触发事件:
document.onkeypress = function(){ if(event.keyCode == 13) { search(); return false; } }
其中search方法是onclick事件:<form name="searchfrom">
@[toc] 注意: "vue": "^2.6.11", "video.js": "^7.10.2", "videojs-contrib-hls...
idea激活码系列破解教程 IntelliJ IDEA 2021最新激活码超详细教程,成功激活到20...
跟HTML一样,XML元素再开始标记处可以由元素属性。 属性通常包含一些关于元素的...
Windows 10 累积更新在修复各种问题的时候,也在不断制造新的问题。部分用户在安...
在Linux中我们使用lsusb命令列出USB设备及其属性,lsusb用于显示系统中的USB总线...
本文是一个ajax结合Spring MVC使用的入门,首先我们来了解一下什么是Ajax AJAX ...
工作中遇到一个案例,之前没有写过,今儿啃了半个下午硬是给写出来,灰常又成就...
最近一直忙着处理原来老项目遗留的一些SQL优化问题,由于当初表的设计以及字段设...
发展史 1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务...
开源是我在行业中遇到过的最有趣的事情之一。这项运动本质上是将人们聚集在一起...