首页 > 解决方案 > 阻止 Enter 在 Safari 中提交表单

问题描述

我的页面上有以下代码:

$('form.enter-doesnt-submit').submit(function () {
    console.log($(document.activeElement));
    if($(document.activeElement).attr('type') == 'submit') {
        console.log
        return true;
    } else {
        console.log("Prevented enter from submitting the form.");
        return false;
    }
});

我很确定我很久以前从 stackoverflow 得到的。它工作正常,只是不在 Safari 中。原因是当我注销时document.activeElement它给了我整个页面,所以属性类型当然不是提交,因此即使您单击提交按钮,表单也不会提交。

我需要能够防止在我的表单上输入提交,因为它们是在线测试,如果用户正在写一个答案并且在表单完成之前不小心按下了输入,那么他们会被错误地标记,因为他们实际上并没有完成测试。

任何人都可以帮助我防止在 Safari 上按下输入吗?

标签: javascriptjquerysafari

解决方案


好的,我通过另一种方式解决了这个问题,而是针对表单中的输入:

$('form.enter-doesnt-submit input[type=text]').keypress(function (e) {
    if(e.keyCode == 13) {
        e.preventDefault()
    }
});

默认情况下,在 textarea 中按 enter 不会提交表单,因此它只是需要阻止的输入。现在我的提交按钮可以在 safari 和 chrome 中使用。


推荐阅读