我发现了几种用于使表单上的输入无效的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;
});
我的问题是:
问:我的版本是否可以使用,或者是否有最佳做法来阻止输入密钥进行表单提交?
答案 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();