在JavaScript中取消onBlur事件?

我想为一个输入元素设置一个onBlur事件来validation该值,如果无效,则“取消”模糊并重新聚焦输入。 但是,从onBlur返回false并不会像onClick那样取消onBlur 。 有没有解决方案(也许使用jQuery?)

我不知道有任何可靠的跨浏览器方式来做到这一点。 通常在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; } });