1

我有一个事件,我想在任何时候R或被SPACE按下时触发,但在输入字段中时除外。

具体来说,我担心我在单击 div 并删除/<input id='nameInput' type='text'>时会动态创建。这就是为什么我尝试检查,但它是一个 jQuery 对象,所以它的布尔值总是(因此)。onchangeonblurif( !$('#nameInput') )$('#nameInput')true!$('#nameInput') == false

$(window).bind('keyup',
  function(e) { 
    var code = (e.keyCode ? e.keyCode : e.which);
    if(code == 32 || code == 82){
      if( !$('#nameInput') ){
        roll();
      }
    }
  }
);

我有一个解决方案,它利用在输入字段的 onfocus 中设置的全局布尔变量,但如果可能的话,我想要一个不需要全局变量的解决方案。

有没有办法确定当前有焦点的元素?

4

1 回答 1

3

您可以使用它document.activeElement来了解当前具有焦点的元素。

if (!$(document.activeElement).is('input, textarea')) {
    roll();
}

您也可以使用:focus选择器。

if (!$(':focus').is('input, textarea')) { 
    roll();
}
于 2013-05-03T01:25:48.603 回答