Отменить событие onBlur в JavaScript? - PullRequest
6 голосов
/ 15 ноября 2010

Я хочу установить событие onBlur для элемента input , которое проверяет значение и, если оно недопустимо, «отменяет» размытие и перефокусирует ввод.Однако возврат false из onBlur не отменяет onBlur , как это происходит с onClick .Есть ли решение для этого (возможно, с использованием jQuery?)

Ответы [ 3 ]

8 голосов
/ 15 ноября 2010

Я не знаю ни одного надежного кросс-браузерного способа сделать это. Обычно устанавливается небольшой тайм-аут в событии onblur и вызывается focus(), когда срабатывает таймер.

Например:

document.getElementById('your_input_id').onblur = function() {
  var self = this;
  setTimeout(function() { self.focus(); }, 10);
}
4 голосов
/ 15 ноября 2010

Вы можете позвонить focus() в обработчике.
Это иногда поможет.

3 голосов
/ 15 ноября 2010

Вы можете сделать это, используя функцию jQuery focus() в течение нуля секунды. Вот пример:

$('#my_input').bind('blur', function(event) {
   var $input = $(this);
   var is_input_valid = false;

   // Code to determine if input is valid
   // ...

   if (!is_input_valid) {
      setTimeout(function() {
        $input.focus();
      }, 0);
      return false;
   }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...