从先前聚焦的输入框中移去焦点

时间:2019-03-17 16:39:39

标签: javascript jquery html

在同一页面上,我还有一个输入框-ibox2

问题-在ibox1上执行任何操作并在其中保留length> 5的值之后,如果我开始输入ibox2,则焦点会跳回到ibox1

正在执行ifibox1.focus()的循环。在外部单击时,如何将焦点完全从ibox1移开,并使if循环及其语句无效。

我尝试了blur,但没有成功。

var ibox1 = $("#inputbox1");

$(document).on("change", ibox1,function(e) { 

   var valu = ibox1.val();

   if(valu.length > 5){

      #do something  
      ibox1.focus(); #used this as input box lost focus with each charater typed.    

   }

});

var ibox2 = $("#inputbox2"); #This is for google places autocomplete.

PS-请不要将其标记为重复项,我在这里尝试了几乎所有内容,然后才发布了此内容。得到解决方案后,我将其删除。

推荐的mod,我遵循了一个不错的答案,并在理解$('document')时犯了一个错误,但是现在我将其清除了。这就是我不删除此问题的原因,即使我说可以,也可能会帮助其他人。你们如果  您觉得可以删除它。谢谢。

2 个答案:

答案 0 :(得分:2)

焦点正在跳回到ibox1,因为您是在每次触发onChange事件时都指示文档这样做。

例如:$(document).on("change", ibox1, funct...,您在其中呼叫ibox1.focus();`。

可能的解决方案:将更改事件绑定到感兴趣的元素本身,避免将来将具有局部重要性的事件绑定到整个文档。

答案 1 :(得分:1)

使用简单的方法将事件附加到输入。检查下面的代码可能对您有帮助。

(function(){
  var in1 = jQuery('#input1'); // first input
  var in2 = jQuery('#input2'); // second input

  // On change of first input
  in1.change(function(){
    if(this.val().length > 5){
      // do something
    }
  });

  // On change of second input
  in2.change(function(){
    if(this.val().length > 5){
      // do something
    }
  });

})();