将焦点返回到具有相同类的输入的模糊上

Returning focus on blur with inputs, which have same class

本文关键字:同类 输入 模糊 焦点 返回      更新时间:2023-09-26

>我在一页上有许多输入,这些输入具有相同的类并且没有ID.
附加到类选择器的绑定事件,用于在条件为真时返回焦点.

但是当单击另一个输入时 - 焦点不返回.
然后想想'因为在另一个元素工作模糊,但不知道需要如何解决这个问题。

<input class="test" value="">
<input class="test" value="">
$(document).ready(function(){
      if (condition) {
    // return focus - not work
    $(".test").blur(function(){
        setTimeout(function() {
        $(this).focus();
        }, 100);
    });
   }
});

这里有两个问题。

首先,一旦setTimeout函数执行,this现在是window对象而不是输入之一。将对原始this的引用存储为模糊处理程序的一部分。

其次,应移动条件检查。就像现在一样,一旦你模糊了输入框,你实际上将被迫永远不会离开它,因为模糊处理程序已经附加并且总是重新聚焦。我不知道你的condition是什么,所以我要把它放在setTimeout回调中。它也可以在setTimeout创作之前进行。

下面是一个假定实现的详细演示小提琴。下面是一个淡化的示例:

<input class="test" value="">
<input class="test" value="">
$(document).ready(function(){
    // return focus - not work
    $(".test").blur(function(){
        var that = this;
        setTimeout(function() {
          if (condition) {
            $(that).focus();
          }
        }, 100);
    });
});

条件应该处于模糊事件,请参阅此小提琴: http://jsfiddle.net/UudLV/1/

如果输入值为空,它将焦点返回到最后一个焦点输入。

$(".test").blur(function() {
    if($(this).val().length === 0) { //Your condition, can be anything
        $(this).focus(); //Return focus
    }
});

将焦点返回到最后一个焦点元素与选择器无关。on blur 事件将最后一个焦点元素作为上下文传递给回调函数,因此,this元素将成为该元素。

编辑*我不完全确定这是OP想要做的。