【问题标题】:manage an onBlur event in JavaScript?在 JavaScript 中管理 onBlur 事件?
【发布时间】:2014-01-02 12:55:57
【问题描述】:

我想为验证值的输入元素设置 onBlur 事件,如果无效,“取消”模糊并重新聚焦(或焦点永不丢失)当前输入。

我已经有了这种平静的代码

document.getElementById('my_input_id1').onblur = function() {
          var self = this;
          setTimeout(function() { self.focus(); }, 10);
        }

假设我的下一个焦点元素是“my_input_id2”,它也有一个“onblur”事件。因为焦点已经移动到“my_input_id2”。当我将焦点设置回“my_input_id1”时,第二个元素“my_input_id2”“onblur 事件是炸了。我想取消第二个元素的 onblur 事件。我有许多其他元素带有“onlur”进行验证。

我可以停止元素以免失去焦点吗? 是否有另一个功能可以做到这一点而不会失去焦点? 我应该使用其他不会失去焦点的功能吗??

还有其他方法可以解决这个问题吗??

非常感谢。

【问题讨论】:

  • 你能详细说明你到底想做什么。你的问题有点混乱。

标签: javascript jquery


【解决方案1】:

试试看

 $('#my_input_id1').on('blur',function(){
     if(SOME CONDITION){
         setTimeout(function(){
             $('#my_input_id1').focus();
         },100);
         return false;
     }
 });

【讨论】:

  • 现在#my_input_id2 onblur 将触发哪个是下一个元素?如何控制它??
  • 我已经和问题中提到的一样......但是失去焦点的问题
  • 你能分享一下小提琴吗
【解决方案2】:

这对 JavaScript 来说非常简单:

document.getElementById('id1').onblur = function(e) {
         if(this.value.length == 0) {
             this.focus();
             e.preventDefault();
             return false;
         }
}

基本上只是根据标准重新调整元素的焦点,当然这可以是您想要的任何东西。

这是小提琴:http://jsfiddle.net/m4cZ2/1/

【讨论】:

  • this.focus() 表示第二个元素 onblur 将触发??如何在 onblur 焦点移动到第二个元素后停止这种情况??
  • 我已更新以防止发生默认事件。
  • 是否会失去焦点或第二个元素 onblur 是否被调用??
  • 非常感谢亲爱的......我会在我的项目中检查它并告诉你......我认为它对我有用......非常感谢
  • 它根本不起作用,亲爱的...你能再给我推荐一个吗??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 2022-01-19
  • 2021-02-27
  • 1970-01-01
相关资源
最近更新 更多