击败输入键进行表单提交

时间:2010-10-06 16:39:55

标签: jquery

我发现了几种用于使表单上的输入无效的jQuery语法。

第一个:

$("form input[@type=text]").bind("keypress", function(e) {
  var code=e.charCode || e.keyCode;
  return (code==13)?false:true;
});

第二个:

$("form").bind("keypress", function(e) {
   if (e.keyCode == 13) return false;
});

我的版本:

$('form').keypress(function(e) {
   if (e.which == 13) return false;
});

我的问题是:

问:我的版本是否可以使用,或者是否有最佳做法来阻止输入密钥进行表单提交?

4 个答案:

答案 0 :(得分:3)

这是一篇关于如何使用jQuery阻止默认操作的优秀文章。

http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/

答案 1 :(得分:1)

您希望捕获表单的提交事件,而不是关注它的提交方式。在jQuery中,你可以这样做:

$('form').submit(function() {
//do something
return false
});

答案 2 :(得分:1)

在您的版本中,您只使用e.which,这在每个浏览器中都不起作用。最好还包括e.keyCode,例如:

/*
$('form').keypress(function(e) {
  var code = e.keyCode ? e.keyCode : e.which;
  if (code == 13) return false;
});
*/

但问题是每次使用回车键时它都会触发。假设您有一个textarea并且您想要输入换行符,而不是返回false,因为您在表单元素中使用了回车键。与从选择框中选择下拉选项相同。因此,将其限制为正常输入字段可能更好:

$('form input[type=text]').keypress(function(e) {
  if (e.which == 13) return false;
});

答案 3 :(得分:1)

我认为你的方法可能很好。捕获表单的提交事件对您的情况不会有任何帮助,因为没有办法(我至少可以想到)知道表单的提交方式。

我要做的唯一建议是将return false;更改为e.preventDefault();