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

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

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


当前回答

$('#FormID').on('keyup keypress', function (e) {
        var keyCode = e.keyCode || e.which;
        if (keyCode === 13) {
            e.preventDefault();
            return false;
        }
    });

其他回答

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

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

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

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

我不知道你是否已经解决了这个问题,或者现在有人试图解决这个问题,但是,这是我的解决方案!

$j(':input:not(textarea)').keydown(function(event){
    var kc = event.witch || event.keyCode;
    if(kc == 13){
    event.preventDefault();
        $j(this).closest('form').attr('data-oldaction', function(){
            return $(this).attr('action');
        }).attr('action', 'javascript:;');

        alert('some_text_if_you_want');

        $j(this).closest('form').attr('action', function(){
            return $(this).attr('data-oldaction');
        });
        return false;
    }
});

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

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

如果keyCode未被捕获,则捕获哪个:

$('#formid').on('keyup keypress', function(e) {
  var keyCode = e.keyCode || e.which;
  if (keyCode === 13) { 
    e.preventDefault();
    return false;
  }
});

编辑:错过了它,最好使用键up而不是按键

编辑2:在一些较新版本的Firefox中,表单提交不会被阻止,因此在表单中添加按键事件会更安全。它也不能工作(不再?),只是将事件绑定到表单“name”,但只绑定到表单id。因此,我通过适当地更改代码示例使这一点更加明显。

修改bind()为on()

您可以在纯Javascript中完美地做到这一点,简单且不需要库。以下是我对类似话题的详细回答: 禁用表单输入键

简而言之,代码如下:

<script type="text/javascript">
window.addEventListener('keydown',function(e){if(e.keyIdentifier=='U+000A'||e.keyIdentifier=='Enter'||e.keyCode==13){if(e.target.nodeName=='INPUT'&&e.target.type=='text'){e.preventDefault();return false;}}},true);
</script>

This code is to prevent "Enter" key for input type='text' only. (Because the visitor might need to hit enter across the page) If you want to disable "Enter" for other actions as well, you can add console.log(e); for your your test purposes, and hit F12 in chrome, go to "console" tab and hit "backspace" on the page and look inside it to see what values are returned, then you can target all of those parameters to further enhance the code above to suit your needs for "e.target.nodeName", "e.target.type" and many more...