我想为验证值的输入元素设置 onBlur 事件,如果无效,则“取消”模糊并重新聚焦输入。但是,从 onBlur 返回false并不会像 onClick 那样取消 onBlur 。有没有解决方案(也许使用jQuery?)
答案 0 :(得分:8)
我不知道有任何可靠的跨浏览器方式来做到这一点。通常在onblur
事件中设置一个小超时,并在计时器触发时调用focus()
。
例如:
document.getElementById('your_input_id').onblur = function() {
var self = this;
setTimeout(function() { self.focus(); }, 10);
}
答案 1 :(得分:4)
您可以在处理程序中调用focus()
这有时会有所帮助。
答案 2 :(得分:3)
您可以通过在零秒超时内使用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;
}
});