2010-11-11 20 views
0

我使用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

您可以检查像

$(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' }); 
    } 
    } 
}); 
0

东西,你可以用evt.target属性访问聚焦元素。所以下面的修改应该做的工作:

$(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' }); 
    } 
} 
})