(в версии jQuery 1.4.4)
Название вопроса может быть не таким ясным, поэтому ниже я приведу более подробное описание:
Я пытаюсь вызвать некоторый код JavaScript, когда выбор в одном из моих блоков выбора изменяется. Я знаю, что могу сделать это с change()
следующим образом:
var my_handler = function(eventObject){
// ... do something here ...
};
$('#my_select_box').change(my_handler);
Проблема в том, что это не срабатывает, когда пользователь меняет выбор с клавиатуры. Я искал в SO, и все предлагают привязать один и тот же обработчик к событию keyup
, как показано ниже:
var my_handler = function(eventObject){
// ... do something here ...
};
$('#my_select_box').change(my_handler).keyup(my_handler);
Действительно, как при изменении выбора с помощью клавиатуры, так и при изменении выбора с помощью мыши выполняется обработчик.
Проблема в том, что когда я изменяю выделение с помощью клавиатуры, а затем перехожу к следующему полю (с помощью мыши или клавиатуры) в форме. Обработчик снова запускается (второй раз)
Можете ли вы объяснить, почему это происходит, и скажите, есть ли способ обойти эту проблему?