首页 > 语言 > JavaScript > 正文

禁止按回车键提交表单的方法

2024-05-06 16:22:17
字体:
来源:转载
供稿:网友

这篇文章主要介绍了禁止按回车键提交表单的方法的相关资料,需要的朋友可以参考下

出现自动提交的情况,有两种可能:

一是编写了javascript代码,当用户点按Enter键时,通过js事件侦听机制触发表单的提交。

二是利用了浏览器的默认行为(至少发现ie是这样的)。浏览器在解析网页的时候,有许多默认的行为,例如如果一个页面上有表单和一个提交按钮,那么打开页面时,焦点会自动落在这个提交按钮上面。同样如果一个表单中只有一个单行文本输入域(text),那么在这个输入域中按Enter键时,浏览器会自动提交该表单。

我们对于第一种情况一般都知道而且很容易理解,但是对于第二种浏览器的默认行为,可能知道这一点的人就比较少了,下面我具体看一下浏览器(至少ie如此)在表单提交上的默认行为。

如果表单中含有一个单行文本输入域,那么无论含有多少其他类型的表单组件,那么在该输入域中点击Enter时,表单会自动提交。

例如下面的代码:

 

 
  1. <form action="" method="post"
  2. <input type="text" name="sdfsdf"/> 
  3. <input type="checkbox">sdfsdf 
  4. <input type="hidden"name="aa"/></form> 

如果表单中含有两个或多个单行文本输入域,那么无论是否含有其他类型的表单组件,按Enter键时不会自动提交,例如:

 

 
  1. <form action="" method="post" 
  2. <input type="text" 
  3. name="sdfsdf"
  4. <input type="text" 
  5. name="sddf"/</form> 

办法很简单,我们上面举的例子中已经有了,只要再添加一个文本输入框就可以了,可能你会说,为了不自动提交就要增加一个没有用的输入框,而且中含有两个输入框最终用户会接受吗?其实可以解决,你可以将那个新添加的输入框通过style隐藏即可,例如:

 

 
  1. <form action="" method="post" 
  2. <input type="text" name="notautosubmit" 
  3. style="display:none"
  4. <input type="text" 
  5. name="username"/</form> 

还有一个方法可以绑定button按钮 enter触发事件:

document.onkeypress = function(){

if(event.keyCode == 13) {search();returnfalse;}}其中search方法是onclick事件:

最终解决方案:

 

  1. <script language="javascript">  
  2. function defineSubmit(btn)  
  3. {  
  4. if("submit1" == btn.value)  
  5. {  
  6. document.testForm.action="firstAction";  
  7. }  
  8. else 
  9. {  
  10. document.testForm.action="secondAction";  
  11. }  
  12.  
  13. document.testForm.submit();  
  14. }  
  15. </script>  
  16. <form name="testForm" method="post">  
  17. username:<input type="text" name="username"/>  
  18. password:<input type="password" name="password"/>  
  19. <input type="button" name="submitName" onclick="defineSubmit(this)" value="submit1"/>  
  20. <input type="button" name="submitName" onclick="defineSubmit(this)" value="submit2"/>  
  21. </form>  

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选