3

テキストボックスとテキストエリア以外の要素のバックスペース キー (キーコード 8) を無効にしたいと考えています。

これが私が成功せずに試したことです:

$(":not(input, textarea)").keydown(function(event) {
    if (event.keyCode == 8) {
        event.preventDefault();
        return false;
    }
});

...

$("*:not(input, textarea)").keydown(function(event) {
    if (event.keyCode == 8) {
        event.preventDefault();
        return false;
    }
});

..

$("body").not("input,textarea").keydown(function(event) {
    if (event.keyCode == 8) {
        event.preventDefault();
        return false;
    }
});

これは、ユーザーがテキストボックスまたはテキストエリアにフォーカスしていないときに、誤ってバックスペース キーを押してしまうのを防ぐためです。

何かご意見は?

4

2 に答える 2

6

また、読み取り専用のテキスト領域またはテキストボックスを無効にする必要があります。

テキスト領域またはテキストボックスが読み取り専用でフォーカスがある場合、バックスペースを押すとページも離れます。そのため、読み取り専用も確認する必要があります。

私はあなたがバック機能を防ごうとしていると思います。

編集:

リスナーをボディにアタッチすることもできます。EDIT2:checbox(入力)でのアクションも防ぐ必要があります

$(document).keydown(function (e) {
                var element = e.target.nodeName.toLowerCase();
                if ((element != 'input' && element != 'textarea') || $(e.target).attr("readonly") || (e.target.getAttribute("type") ==="checkbox")) {
                    if (e.keyCode === 8) {
                        return false;
                    }
                }
});
于 2012-06-29T17:20:02.177 に答える
2

最も簡単な解決策(すべての特殊なケースをカバー)は次のとおりです。

$(document).keydown(function(e) {
    if (e.which == 8 && !$(':focus').length) {
        e.preventDefault();
    }
});
于 2013-03-14T13:10:17.627 に答える