2009-09-15 100 views
3

我有一个表格,我使用JQuery,我不认为我需要把代码放在这篇文章中,这个问题是非常基本的。如何在按下回车键或回车键时阻止表单提交?

但我想阻止表单提交时,人们按下Enter键或Return键。

同时,我有textareas,用户需要能够按Enter/Return键。

+0

一个很好的折衷可能是实现客户端验证。如果用户按下输入并且验证失败,表单将不会通过。如果他们按回车并验证成功,即使是意外,表单也会通过,但至少您会保持默认浏览器行为不变。 – colllin 2012-02-29 21:40:40

回答

4

快速和肮脏的劈,但一般不是试图阻止在各个领域的按键更可靠:地址:

<input type="submit" onclick="return false;" /> 

在窗体的顶部。在当前浏览器中按下Enter键时,表单中的第一次提交将用作默认按钮,因此通过中断它可以防止发生Enter提交。

然后使用CSS隐藏和/或移动按钮,使其无法看到。

尽管阻止输入提交并不总是一个好主意,这是浏览器工作的标准方式,有些用户确实需要它。

+0

谢谢,那就是我一直在寻找的。我明白,浏览器正常操作并不是一个好主意,但有时你只需要做客户需要的东西...... – BIL9000 2009-09-16 20:31:58

0

在文档级设置一个标志,submitform = false; 验证提交对此。 更改提交按钮的onclick处理程序中的标志。

0

难道你不能添加一个onsubmit属性给表单,然后检查它是否使用回车键提交?

0

你可以试试这个

jQuery(document).ready(function(){ 
    validSubmit = false; 
}) 

jQuery('myForm textarea').keypress(function(e) { 
    if (e.which == 13) { 
     validSubmit = true; // if the pressed key is enter, then allow submissions 
    } 
}) 

jQuery('myForm').submit(function(){ 
    if (!validSubmit) { 
     return false; //if submitting the form is not allowed, then cancel submission 
    } 
}) 

这将取消任何除非输入/敲击回车键上一个textarea提交的所有文件。如果你正在使用一个按钮,你也需要添加一个函数。

jQuery('form button.validSubmit').click(function(){ //or 'form input[type="submit"]' 
    validSubmission = true; 
})