2013-12-09 4 views
0

У меня естьJQuery: огонь KeyUp по всему документу, исключая один текстовое поле ввода

$(document).keyup(function(e) { 
    //some code is here 
}); 

код, который работает, как ожидалось: он срабатывает при нажатии на любую клавишу на клавиатуре. Я хочу, чтобы стрелять, но не тогда, когда курсор находится в

<input type="text" id="excludeMeFromFiring"> 

, которая находится на этой странице.

Как изменить приведенный выше код, чтобы исключить обстрел при вводе текстового поля ввода со специальным идентификатором? Поэтому он не срабатывает, если курсор находится в текстовом поле ввода.

спасибо.

ответ

5

Это легко сделать, что в keyup функции:

$(document).keyup(function(e) { 
    if ($(e.target).closest("#excludeMeFromFiring")[0]) { 
     return; 
    } 

    // It's not that element, handle it 
}); 

Это общий случай; потому что input элементы не могут иметь каких-либо элементов в них, вы могли бы просто использовать e.target.id, а не closest:

$(document).keyup(function(e) { 
    if (e.target.id === "excludeMeFromFiring") { 
     return; 
    } 

    // It's not that element, handle it 
}); 

Я использую closest всякий раз, когда элемент может иметь другие элементы внутри него.

3

Попробуйте

$(document).keyup(function (e) { 
    if(e.target.id === 'excludeMeFromFiring'){ 
     console.log('no'); 
    }else{ 
     console.log('hi'); 
    } 
}); 

$(document).keyup(function (e) { 
    if(e.target.id !== 'excludeMeFromFiring'){ 
     console.log('hi'); 
    } 
}); 
3

Другой пример:

$('#excludeMeFromFiring').keyup(function(e) { 
    e.stopPropagation(); 
});