我想为一个元素设置一个onBlur事件,该事件验证值,并在无效时“取消”模糊并重新聚焦输入。但是,从onBlur返回false不会像onClick一样取消onBlur。是否有解决此问题的方法(可能使用jQuery)?
我想为一个元素设置一个onBlur事件,该事件验证值,并在无效时“取消”模糊并重新聚焦输入。但是,从onBlur返回false不会像onClick一样取消onBlur。是否有解决此问题的方法(可能使用jQuery)?
我不知道有任何可靠的跨浏览器方法来实现这一点。通常在onblur
事件中设置一个小的延迟时间,在计时器触发时调用focus()
函数即可。
例如:
document.getElementById('your_input_id').onblur = function() {
var self = this;
setTimeout(function() { self.focus(); }, 10);
}
您可以在处理程序中调用focus()
函数。
这有时会有所帮助。
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;
}
});
this
分配给var self
并在超时回调闭包中使用self。 - Uyghur Lives Matter
setTimeout
,请查看我的更新答案。 - casablancasetTimeout
需要一个函数。setTimeout(function() { ... }, 40);
- SLaks