jQuery on()方法多次触发

时间:2012-10-24 09:56:53

标签: jquery

我制作了一些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>

但每当我输入内容时,似乎它被解雇了三次,例如一次按下输入我在控制台中得到三次“输入”而对于数字我得到三次“确定”,为什么会这样?我也用代表替换它并且直播,现场工作正常,但委托也被解雇了三次。谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

无论如何请粘贴全身