选中输入框时,防止键盘事件触发

时间:2013-05-03 01:21:00

标签: javascript jquery

每当按下 R SPACE 时,我都会触发一个事件,但在输入字段中的时间除外。

具体来说,当我点击div并删除<input id='nameInput' type='text'> / onchange时,我担心动态创建的onblur。这就是我尝试检查if( !$('#nameInput') )的原因,但$('#nameInput')是一个jQuery对象,所以它的布尔值总是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中设置的全局布尔变量,但是我想要一个不需要全局变量的解决方案。

有没有办法确定目前哪个元素有焦点?

1 个答案:

答案 0 :(得分:3)

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

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

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

if (!$(':focus').is('input, textarea')) { 
    roll();
}