仅在<input />元素未聚焦时触发jQuery keyup事件

时间:2010-08-05 03:09:39

标签: javascript jquery

我可以使用jQuery将函数绑定到<input>元素上下文中的keyup事件,这样事件只会在<input>元素聚焦时触发:

$('#my-input').keyup(function(e) {
  // only fires when the focus is on the <input> element
}

如何将函数绑定到外部的事件 input元素的上下文?我希望只能触发一个keyup事件当<input>元素没有聚焦时:

$(':not(#my-input)').keyup(function(e) {
  // this code fires regardless of whether the input element is focused
}

不幸的是,无论<input>框是否被聚焦,上述函数都会运行。

2 个答案:

答案 0 :(得分:4)

$('#my-input').focus(function(){
 $('body').unbind('keyup');
}).blur(function(){
 $('body').keyup(function(e) {
  //do stuff
 });
});

答案 1 :(得分:0)

另一种解决方案是检查事件目标是否为输入:

   $('body').keyup(function(e) {
      if(!$(e.target).is('input')){
         console.log('i am not input');
      }            
   });