@t0os

Как назначить сразу 2 обработчика в jQuery: blur + keydown?

Пример кода тут: jsfiddle.net/8Jfne/29/



Суть в следующем: есть набор инпутов. При перемещении по ним (с клавиатуры или мышью), при уходе с них, проверяется значение. Если не числовое, то ругаемся и возвращаемся к редактированию проблемного инпута.



А теперь проблема:

В Chrome если ввести в инпут не числовое значение и нажать на Enter, то отрабатывает onkeydown — все хорошо. В FF и IE срабатывают оба обработчика, таким образом сообщение об ошибке появляется дважды (в FF у меня вообще трижды, 2 раза onblur отрабатывает).



Хотелось бы спросить, как выйти из такой ситуации?
  • Вопрос задан
  • 3025 просмотров
Пригласить эксперта
Ответы на вопрос 5
Проверять, если сообщение об ошибке.
Ответ написан
@max_rip
А не проще повесить событие проверки на onsubmit?
Ответ написан
sdevalex
@sdevalex
Так не катит?
$(...).on('blur keydown', function(){
    //...
});
Ответ написан
Комментировать
sdevalex
@sdevalex
$(function() {
     function isInt(x) { 
         var y = parseInt(x); 
         if (isNaN(y)) return false; 
         return x == y && x.toString() == y.toString(); 
     } 
     
     $('input').on('blur keydown', function(){
         if(!isInt($(this).val()))
             $(this).focus();
     });
});  
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы