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