禁用回车键提交表单

13

我有一个包含文本字段的表单,我正在尝试禁用浏览器在用户选中文本字段时按下 Enter 键时提交整个表单的默认行为。

$('#recaptcha_response_field').keydown(function(event) { if (event.keyCode == 13) {
     event.preventDefault();
     event.stopPropagation();
     event.stopImmediatePropagation();
     alert("You Press ENTER key");
     return false;
   } 
});

目前我正在收到“您按下ENTER键”的提示,但默认行为没有被覆盖。


1
不要使用输入框的keydown事件,而应该使用表单的submit事件。 - A. Wolff
1
请在提交问题之前先向谷歌提问,这将为您提供已经详细回答的原始问题。此外,该问题已经在以下链接中得到解答:https://dev59.com/TXRB5IYBdhLWcg3wkH9N。请勿重复提问。 - iAmClownShoe
1
preventDefault 就足够了。你不需要停止传播,也不需要返回 false。 - Bergi
@roasted 但是我们如何在onsubmit事件中知道这个表单是使用回车键提交的。 - asim-ishaq
@roasted,你能给出你回答的原因吗?当然可以使用提交处理程序,但为什么要使用它而不是在按下/松开回车键时使用keydown/keyup?两者都可以在这里起作用,你似乎在说keydown不起作用。 - iAmClownShoe
显示剩余6条评论
5个回答

26

试一下这个:

$(document).on("keypress", 'form', function (e) {
    var code = e.keyCode || e.which;
    if (code == 13) {
        e.preventDefault();
        return false;
    }
});

这将防止在keypress上提交表单

点此查看演示


keyup事件在提交后触发,因此您无法禁用默认行为,因为它已经发生了。 - iAmClownShoe
3
还可以防止文本框按下回车键换行 \n - Jonathan
1
keydown 触发最早,因此使用它是最安全的。 - Saulius

13

我发现这个对我有用。

<input type="text" name="somename" id="someid" value="" onkeypress="return event.keyCode!=13">

9

为了防止脚本阻塞其他元素(比如textarea)上的回车键,请将目标从"form"更改为"input"。

$(document).on("keypress", "input", function (e) {
    var code = e.keyCode || e.which;
    if (code == 13) {
        e.preventDefault();
        return false;
    }
});


1
谢谢,伙计,只有一个东西真正帮助了我的情况。 - Green Joffer

3

如果以上解决方案都不能满足您的需求,而且您已经在使用JavaScript,为什么不将按钮类型设置为“button”<input type='button'>,然后使用JavaScript提交呢?

$('#form_id').submit(); 

1
您可以使用此脚本防止在整个表单中按Enter键。
<script type="text/javascript">
        $(document).on("keypress", 'form', function (e) {
            if (e.target.className.indexOf("allowEnter") == -1) {
                var code = e.keyCode || e.which;
                if (code == 13) {
                    e.preventDefault();
                    return false;
                }
            }
        });
    </script>

您需要将类名放在需要使用输入的控件上。


可能在 Mac 上无法正常工作,因为 Mac 有不同的按键代码。 - Darksymphony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接