无论出于何种原因,我都无法捕获“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;
}
}
这似乎是另一个与Tab顺序相关的项目,它不再像以前在基于Microsoft.Net WinForm / WebForm的应用程序中工作那样有效。
答案 0 :(得分:32)
如果您使用的是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();
});
答案 1 :(得分:1)
我创建了一个函数,我连接到我的按钮的onkeydown事件。我使用了onkeydown,因为onkeypress不能捕获我的tab键按
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 :(得分:0)
在keypress事件中使用相同的代码。 选项卡更改了按键和键盘之间的元素。 这里我们得到event.key = tab和event.shiftKey = true。