が押されたchecked
ときにチェックボックスのプロパティを切り替えるために使用するコードの小さなスニペットがあります。space bar
$(document).on('keydown', function(e) {
if (e.which === 32) {
e.preventDefault();
$('#example').prop('checked', function() {
return !this.checked;
});
}
});
上記は Chrome v30 および IE10 では正常に機能しますが、Firefox v24 では機能しません。チェックボックスをクリックしてからスペースバーを使用して切り替えると、問題が発生し、一時的にチェックされてからチェックが解除されます。その逆も同様です。
この問題は、を使用しているにもかかわらずclick
、Firefox でイベントがトリガーされるという事実と関係があると思います (これにより、Chrome と IE の両方でクリック イベントがトリガーされなくなります)。keydown()
e.preventDefault()
keyup
イベントをバインドして、同じコードを使用してみました。これにより、Firefox の問題は修正されましたが、IE にも同じ問題が発生しました。
Firefoxが影響を受けるフィドルは次のとおりです
なぜこれが起こっているのか、どうすれば回避できるのか誰か知っていますか?