在JavaScript中取消onBlur事件?

时间:2010-11-15 15:37:14

标签: javascript jquery events

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

3 个答案:

答案 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;
   }

});