Отменить событие onBlur в JavaScript?

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

3 ответов


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

например:

document.getElementById('your_input_id').onblur = function() {
  var self = this;
  setTimeout(function() { self.focus(); }, 10);
}

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


вы можете сделать это, используя 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;
   }

});