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

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

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


当前回答

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

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

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

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

其他回答

以上大多数答案将阻止用户在textarea字段中添加新行。如果这是你想要避免的情况,你可以通过检查当前有焦点的元素来排除这种特殊情况:

var keyCode = e.keyCode || e.which;
if (keyCode === 13 && !$(document.activeElement).is('textarea')) {
  e.preventDefault();
  return false;
}

当文件完成时(加载完成),脚本检测“Entry”键的每个事件,并禁用后面的事件。

<script>
            $(document).ready(function () {
                $(window).keydown(function(event){
                    if(event.keyCode == 13) {
                        e.preventDefault(); // Disable the " Entry " key
                        return false;               
                    }
                });
            });
        </script>

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

<form onsubmit="return false;">

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

$(document).on('keyup keypress', 'form input[type="text"]', function(e) {
  if(e.which == 13) {
    e.preventDefault();
    return false;
  }
});

这个解决方案适用于网站上的所有表单(也适用于插入ajax的表单),只防止输入文本中的输入。把它放在文档就绪函数中,然后永远忘记这个问题。

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

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