jquery 防止用户在文本区域以外按Enter键

7uzetpgm  于 2023-03-01  发布在  jQuery
关注(0)|答案(1)|浏览(181)

我有一个相当复杂的形式,其中有许多不同的文本字段和文本区域的多个阶段。它是在使用条形码的环境中使用,默认情况下点击进入,这是由选择,因为他们扫描使用它们的众多产品,所以关闭进入功能已成为一个不去。
我正在使用一个表单向导脚本,该脚本在输入阶段处理客户端验证。在填写表单时,该脚本会被按Enter键打断,并且在页面刷新之前拒绝提交。

<a href="javascript:;" class="btn green button-submit">Submit <i class="m-icon-swapright m-icon-white"></i></a>

我有下面的代码,它的作品,以防止进入的形式,并允许提交的形式时,上面的链接被点击。

$(window).keydown(function (event) {
    if (event.keyCode == 13) {
        event.preventDefault();
        return false;
    }
});

然而,这会阻止在文本区域中使用Enter。我做了一些研究,并尝试使用jQuery中的is()操作符

$(document).ready(function () {
    $(window).keydown(function (event) {
        if (event.keyCode == 13 && !event.is("textarea")) {
            event.preventDefault();
            return false;
        }
    });
});

这不起作用,它无法阻止输入中的回车键,并像以前一样阻止表单提交。
最后,这是一个javascript,用于在表单验证通过时处理表单的提交

$('#form_wizard_1 .button-submit').click(function () {
    // Can put more onsubmit processing here
    document.getElementById('submit_form').submit();
}).hide();

有谁能告诉我怎样才能防止除文本区域之外的所有输入都使用回车键吗?我不想假装是一个JavaScript开发人员,尽管我在努力学习。下面是我读过的文章,我要么试图修改代码,要么不明白它如何以正确的方式应用于我:
Prevent users from submitting a form by hitting Enter
Prevent Users from submitting form by hitting enter #2
disable enter key on page, but NOT in textarea

  • 关于最后一个链接,我需要一个全局的决议,自动防止它在所有的textareas可能存在的形式。

一如既往,谢谢你的协助。

dw1jzc5e

dw1jzc5e1#

JavaScript语言

使用KeyboardEvent.keyElement.matches(selectors)

document.querySelector("#myForm").addEventListener("keydown", (evt) => {
  if (evt.key === "Enter" && !evt.target.matches("textarea")) {
    evt.preventDefault(); // Don't trigger form submit
    console.log("ENTER-KEY PREVENTED ON NON-TEXTAREA ELEMENTS");
  }
});
<form id="myForm">
  <input name="inp" placeholder="Click here and hit Enter" type="text">
  <textarea name="txa" placeholder="Click here and hit Enter"></textarea>
  <input type="submit">
</form>

jQuery

使用!$(event.target).is("textarea")
也可以使用Event.key,或者使用Event.which(而不是Event.keyCode;jQuery将其规范化为跨浏览器)
一个二个一个一个

相关问题