如何从使用键盘命令的函数中排除表单/输入?

时间:2010-11-11 08:44:27

标签: jquery input focus keydown

我正在使用jQuery scrollTo插件和keydown事件来使用J和K键水平滚动窗口。这很好用,但是,我在页面上有表单输入,所以我想在输入聚焦时禁用滚动行为。我的代码如下:

// scroll left/right
$(document).keydown(function (evt) {
  if (evt.keyCode == 75) { 
    evt.preventDefault(); 
    $.scrollTo( '+=201px', '', { axis:'x' } ); 
  } else if (evt.keyCode == 74) { 
    evt.preventDefault();
    $.scrollTo( '-=201px', '', { axis:'x' } );
  }
});

2 个答案:

答案 0 :(得分:2)

您可以查看类似

的内容
$(document).keydown(function (evt) {
var element = $(evt.target);
if (!element.is('input,textarea')) {
  if (evt.keyCode == 75) { 
    evt.preventDefault(); 
    $.scrollTo( '+=201px', '', { axis:'x' } ); 
  } else if (evt.keyCode == 74) { 
    evt.preventDefault();
    $.scrollTo( '-=201px', '', { axis:'x' } );
  }
  }
});

答案 1 :(得分:0)

您可以使用evt.target属性访问focus元素。所以下面的修改应该做的工作:

$(document).keydown(function(evt){
  if(!$(evt.target).is("input")){
    if (evt.keyCode == 75) { 
        evt.preventDefault(); 
        $.scrollTo( '+=201px', '', { axis:'x' } ); 
    } else if (evt.keyCode == 74) { 
       evt.preventDefault();
       $.scrollTo( '-=201px', '', { axis:'x' } );
    }
 }
})