6

スクリプトは機能しますが、textarea / inputにあり、それらのキーが押されたときに関数を起動しないようにする方法がわかりません。別名:ユーザーがtextarea / inputにいない限り、ユーザーがそのキーを押したときにイベントを起動します。

$('body').keyup(function (event) {

var direction = null;
if (event.keyCode == 37) {
  $('#wrapper').fadeOut(500)
} else if (event.keyCode == 39) {
        $('html,body').animate({scrollTop: $('body').offset().top}, {duration: 1500, easing: 'easeInOutQuart'}
        )
return false;    
}
     })
4

3 に答える 3

10

event.targetを確認するだけです:

$('body').keyup(function(event) {
    if ($(event.target).is(':not(input, textarea)')) {
       ...
    }
});

この場合、(本体にアタッチされた)イベントハンドラーは1つだけですが、イベントを受信する要素をフィルター処理します

于 2010-09-24T14:24:48.527 に答える
1

試す:

$('body *:not(textarea,input)').keyup(function (event) {

});
于 2010-09-24T14:21:46.713 に答える
1
$('body :not(textarea,input[type=text])').keyup(function (event) {

また

$('body').not('textarea,input[type=text]').keyup(function (event) {
于 2010-09-24T14:23:25.797 に答える