1

我制作了一些 jQuery 代码来防止用户输入字符,但只能输入数字:

     $("div").on("keydown", ":text", checkKey);

    function checkKey(e) {
    var n = e.keyCode;
    if (n == 13) {
        $(this).closest("form").submit();
        console.log('enter');
    }
    else if (e.shiftKey || e.ctrlKey || e.altKey) {
        e.preventDefault();
    } else {
        if (!((n == 8)
                || (n == 46) || (n == 9)
                || (n >= 35 && n <= 40)
                || (n >= 48 && n <= 57)
                || (n >= 96 && n <= 105))
        ) {
            e.preventDefault();
            console.log('ok');
        }
    }
}

以html结尾:

 <div>
    <input type="text" id="test" />
</div>

但是每当我输入一些东西时,它似乎被触发了三次,例如,按一次输入,我在控制台中得到三个“输入”,而对于数字,我得到三个“确定”,这是为什么呢?我也将其替换为代表和现场,现场工作正常,但代表也被解雇了 3 次。谢谢。

4

1 回答 1

0

您的输入#test 不是在三个 div 中吗?我认为您可能在 .on() 中有错误的选择器。尝试使用类似的东西:

$("div").on("keydown", "input#test", checkKey);

无论如何请贴全身

于 2012-10-24T10:03:08.360 回答