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

2 回答 2

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' } );
  }
  }
});
于 2010-11-11T08:56:01.663 回答
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' } );
    }
 }
})
于 2010-11-11T08:58:42.543 回答