我有以下javascript在我的页面似乎不工作。

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

我想在进入时禁用提交表单,或者更好的是,调用我的ajax表单提交。任何一种解决方案都是可以接受的,但上面包含的代码不会阻止表单提交。


当前回答

如果你只是想在进入和提交按钮时禁用提交,也可以使用表单的onsubmit事件

<form onsubmit="return false;">

你可以将“return false”替换为调用JS函数,该函数将执行所需的任何操作,并将提交表单作为最后一步。

其他回答

3年过去了,没有一个人能完全回答这个问题。

请求者希望取消默认的表单提交并调用自己的Ajax。这是一个简单的要求和简单的解决方案。不需要拦截每个输入中的每个字符。

假设表单有一个提交按钮,无论是<button id="save-form">还是<input id="save-form" type="submit">,执行:

$("#save-form").on("click", function () {
    $.ajax({
        ...
    });
    return false;
});

在firefox中,当你按下input并按下enter,它会提交它的上层形式。解决方案是在提交表单中添加以下内容:

<input type="submit" onclick="return false;" style="display:none" />

这个怎么样:

$(":submit").closest("form").submit(function(){
    $(':submit').attr('disabled', 'disabled');
});

这应该禁用所有表单提交按钮在你的应用程序。

更短:

$('myform').submit(function() {
  return false;
});

当你关注输入元素时,表单通常是按Enter键提交的。

我们可以在表单中的输入元素上禁用Enter键(代码13):

$('form input').on('keypress', function(e) {
    return e.which !== 13;
});

演示:http://jsfiddle.net/bnx96/325/