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 回起動されているように見えます。また、デリゲートとライブに置き換えました。ライブは正常に機能しましたが、デリゲートも3回解雇されました。ありがとう。

4

1 に答える 1

0

あなたの入力は 3 つの div の #test ではありませんか? .on() で間違ったセレクターを使用できると思います。そのようなものを使用してみてください:

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

とにかく全身貼ってください

于 2012-10-24T10:03:08.360 に答える