0

キーダウンを使用してチェックボックスをチェック(解除)し、マウスクリックと組み合わせることに問題があります。ID「check」のチェックボックスがあり、スペースバーを押してチェックボックスをチェックおよびチェック解除するjQueryコードの一部を次に示します。

$(document).keydown(function (e) {
    if (e.keyCode == 32) {
        if ($("#check").is(":checked")) {
            $("#check").prop("checked", false);
        }
        else {
            $("#check").prop("checked", true);
        }
    }
});

ドキュメントが読み込まれると、すべてがうまく機能します。しかし、古典的なマウスクリックだけでチェックボックスをオンまたはオフにすると、スペースバーを使用してチェックを外すことができなくなります。スペースバーを押すたびに(チェックボックスをクリックした後)、チェックボックスがオンになり、すぐにオフになります。たとえば、チェックされていて、この壊れた状態にある場合、スペースバーを押すと、チェックボックスが再度チェックされるだけになります。

この望ましくない動作を防ぐためのあらゆるアイデアに感謝します。

4

3 に答える 3

1

.removeAttr("checked")チェックを外すために使用し.attr("checked","checked")、チェックボックスをチェックするために使用しますこれが機能することを願っています

于 2013-10-29T14:13:11.567 に答える
1

あなたの質問は、チェックボックスの変更とクリックイベントのこのjQueryの違いに似ています。キーボード イベントをキャプチャするには、keydown ではなく、クリック ハンドラを使用する必要があります。

于 2013-10-29T14:13:37.340 に答える
1

event.stopImmediatePropagationを使用できます

残りのハンドラーが実行されないようにし、イベントが DOM ツリーをバブリングしないようにします。

また、クロスブラウザのサポートのためにこの行を追加してください

event = e || window.event;

デモ

$(document).keydown(function (e) {
    event = e || window.event;
    event.stopImmediatePropagation();

    if (event.keyCode == 32) {
        if ($("#check").is(":checked")) {
            $("#check").prop("checked", false);
        }
        else {
            $("#check").prop("checked", true);
        }
    }
});
于 2013-10-29T14:16:24.303 に答える