Отменить событие 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;
}
});