JQuery ダイアログのボタンにフォーカスがある場合、スペース バーはボタンの選択とウィンドウのスクロールという 2 つのことを行います。ボタンを選択するためのツールとしてスペース バーに慣れている人は、最初のボタンは期待しますが、2 番目のボタンは耳障りで不適切だと感じます。
質問: ページがスクロールしないようにするにはどうすればよいですか? ボタンハンドラからfalseを返すだけだと思っていましたが、そうではないようです。
JQuery ダイアログのボタンにフォーカスがある場合、スペース バーはボタンの選択とウィンドウのスクロールという 2 つのことを行います。ボタンを選択するためのツールとしてスペース バーに慣れている人は、最初のボタンは期待しますが、2 番目のボタンは耳障りで不適切だと感じます。
質問: ページがスクロールしないようにするにはどうすればよいですか? ボタンハンドラからfalseを返すだけだと思っていましたが、そうではないようです。
ここや他の場所で提案されている解決策を試しましたが、どれもうまくいきませんでした。最終的に機能したのは、次のようなドキュメント全体のキーダウン ハンドラーでした。
$(document).keydown(function (e) {
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
if ((key == 32) && (e.target.className != null) && (e.target.className.indexOf("ui-button") != -1))
e.preventDefault();
});
キー == 32 は明らかにスペースバーのチェックです。className は、問題の UI (ユーザー インターフェイス) 要素が JQuery ボタンであるかどうかのチェックです。ボタン チェックがないと、スペース バーはどこでも無効になります。