在JavaScript中管理onBlur事件?

时间:2014-01-02 12:55:58

标签: javascript jquery

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

我已经拥有了这种代码的和平

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

假设我的下一个聚焦元素是'my_input_id2',它也有一个“onblur”event.as焦点已经移动到'my_input_id2'。当我将焦点设置回'my_input_id1'时,第二个元素'my_input_id2'“onblur事件是我希望取消第二个元素的onblur事件。我有许多其他元素和“onlur”进行验证。

我可以停止不丢失焦点吗? 有没有其他功能可以做到没有失去焦点? 我应该使用一些不会失去焦点的其他功能吗?

还有另一种方法可以摆脱这个问题吗?

许多人提前感谢。

2 个答案:

答案 0 :(得分:0)

试试吧

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

答案 1 :(得分:0)

使用JavaScript非常简单:

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

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

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