2015-12-07 7 views
3

У меня есть следующий код JQuery:JS - Как выполнить прослушиватель, связанный с событием, и исключить из исполнения остальных слушателей, связанных с различными событиями?

$input.on('keyup', keyUpListener); 

$input.on('input', inputListener); 

// IE <= 8 fallback for input event. 
$input[0].onpropertychange = function() { 
    if (window.event.propertyName === "value") {     
     inputListener(window.event); 
    } 
}; 

$input является JQuery input[type='text'].

Сейчас keyUpListener и inputListener оба выполняются при вводе в input или когда я скопировать и вставить что-то (onpropertychange не уволили, потому что это IE только событие).

Но как я могу сообщить JS, чтобы не стрелять inputListener если keyUpListener выполняет и наоборот?

Спасибо за внимание!

+0

Зачем вы оба? Вход будет достаточно http://stackoverflow.com/questions/17384218/jquery-input-event – gurvinder372

+0

'input' срабатывает при' keydown' при вводе, т. Е. Когда я нажимаю и удерживаю клавишу, прослушиватель событий уже запущен. Я только хочу выполнить код на 'keyup', используя' keyUpListener' ** при вводе **. В других случаях ('copy/paste' символы, вставленные из предложений' accent' в OS X и других случаях 'keyup', не обрабатываются), я хочу использовать' inputListener'. – tonix

ответ

0

Прикрепить конкретное событие в текстовое поле?

$("#input").on('input', function() { 
} 

Например вышеизложенное - таким образом, вы можете иметь несколько слушателей не выполняется на том же входе

EDIT

Вы можете связать функцию вставки в текстовое поле также ..

$("#input").bind('paste', function() { 
var pasted = true; 
}); 

Таким образом, вы можете иметь ниже IF заявление:

if (pasted) { 
$input.on('input', inputListener); 
} else { 
$input.on('keyup', keyUpListener); 
} 
+0

Извините, я вас не понял. Я хочу, чтобы слушатели были связаны с одним и тем же элементом, но у меня разные события. – tonix

+0

Вам нужно будет изменить порядок выше, чтобы сидеть в вашей функции. – Daniel

+0

Да, это работает для 'copy/paste', но как насчет' выбора опции автозавершения, скопирования средним кликом в стиле Linux, перетаскивания и ломать других вещей'? 'input' обрабатывает все правильно. – tonix