なんらかの理由で「SHIFT + TAB」の組み合わせをキャプチャできません。最新のjQueryを使用しています。
他のajax/javascriptなどを使用しても同じ結果になります。
これは私が現在理解しているように機能するはずの簡単な例です...
event.whichまたはevent.KeyCodeは常に「未定義」であり、shiftKeyは、「SHIFT + TAB」またはキーボードの後方トラバーサルを含むシナリオにのみ存在します。これは、従来、Windowsベースのアプリ/ Webなどに固有のものです...
function ShiftTab()
{
debugger;
if(event.KeyCode == 9 && event.shiftKey) // neither this line nor the following work
// if (event.which == 9 && event.shiftKey) // shift + tab, traverse backwards, using keyboard
{
return true;
}
else
{
return false;
}
}
これは、Microsoft.Net WinForm/WebFormベースのアプリで従来機能していたように機能しなくなった、タブ順序に関連するさらに別の項目のようです。
JQueryを使用している場合、これがコードの動作方法です。 keyCode
が小文字であることを確認してください。また、jQueryはkeyCode
をwhich
に正規化します。
$(document).keyup(function (e) {
if (e.which === 9 && e.shiftKey) {
ShiftTab();
}
});
簡潔なJavaScriptに興味がある場合:
$(document).keyup(function (e) {
e.which === 9 && e.shiftKey && ShiftTab();
});
jQuery 1.7+ on
構文:
$(document).on('keyup', function (e) {
e.which === 9 && e.shiftKey && ShiftTab();
});
ボタンのonkeydownイベントに接続する関数を作成しました。 onkeypressはタブキーの押下をキャプチャしないため、onkeydownを使用しました
function ShiftTab(evt) {
var e = event || evt; // for trans-browser compatibility
var charCode = e.which || e.keyCode; // for trans-browser compatibility
if (charCode === 9) {
if (e.shiftKey) {
$('#controlName').focus();
return false;
} else {
return true;
}
}
私はこのアプローチを採用して、2つの特定の問題に対処しました。
keypressイベント内で同じコードを使用します。タブは、キー押下とキーアップの間で要素を変更します。ここでは、event.key = tabおよびevent.shiftKey = trueを取得します。