Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript可以';t捕获";班次+;标签";结合_Javascript_Jquery_Tabs_Shift - Fatal编程技术网

JavaScript可以';t捕获";班次+;标签";结合

JavaScript可以';t捕获";班次+;标签";结合,javascript,jquery,tabs,shift,Javascript,Jquery,Tabs,Shift,无论出于什么原因,我都无法捕获“SHIFT+TAB”组合。 我正在使用最新的jQuery 如果我使用其他ajax/javascript等,结果也是一样的 这是一个简单的例子,应该工作,因为我目前的理解 event.which或event.KeyCode始终是“未定义”的,只有shiftKey存在于涉及“SHIFT+TAB”或向后键盘遍历的场景中,这通常是基于windows的应用程序/web或其他应用程序固有的 function ShiftTab() { debugge

无论出于什么原因,我都无法捕获“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
规范化为
,其中

$(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事件的函数。我使用了onkeydown,因为onkeypress不会捕获我的制表键

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;
              }
       }
我采用这种方法来处理两个具体问题:

  • onkeypress无法捕获tab按键
  • 当点击shift tab时,按下shift键将触发该功能,因此我必须嵌套shiftkey修改器检查

  • 在按键事件中使用相同的代码。 该选项卡在按键和向上键之间更改元素。
    这里我们得到event.key=tab和event.shiftKey=true。

    如果这个问题已完成,您应该接受一个答案:)我的意思是,使用keyup时,这并不总是有效的。这是因为,例如,我首先放开了shift键。这将返回9和false,因为按下了tab,但没有按下shift。若你们先放开tab,那个就没问题了。但使用keydown键可以工作,因为您按下tab键,并且已经按下了shift键。这对我来说不起作用,无论我按什么顺序释放
    tab
    。我不知道为什么我的代码不能识别与中情局的
    标签一起按下的
    shift
    键我想博基在他的答案中找到了你。但基本上onKeyUp会触发两次,每个键(Shift和Tab)触发一次。默认情况下,事件处理程序不知道SHIFT在任何方面都是特殊的-它只是另一个键。您必须检查KeyDown或KeyPress上的事件,以便在tab注册时检查SHIFT。