1

我的输入字段有这个自动建议菜单,并且由于有多个字段,我需要选择在单击 li 并模糊输入之前处于焦点的字段,因此它知道要选择哪个输入。有没有办法让最后一个输入字段在模糊之前聚焦?谢谢

function fill(thisValue) {
 if(thisValue === undefined){
   $('#suggestions').fadeOut();
    } else {
    $("input *//input in focus before blur//* .val(thisValue);
    setTimeout("$('#suggestions').fadeOut();", 600);
    $('.email').addClass('load');

     }
  }
4

1 回答 1

1

是的,但是您需要在单击 LI 时存储最后一个焦点元素,或者更准确地说,在单击它之前存储它,并且blur为时已晚。

var lastFocused = null;

$('li').on({
    mousedown: function() {
        lastFocused = document.activeElement; //saves focused element
    },
    click: function() {
        //do whatever you do on click
    }
});

function fill(thisValue) {
   if(thisValue == undefined && lastFocused) {
       $('#suggestions').fadeOut();
   } else {
       lastFocused.value = thisValue;
       setTimeout(function() {
          $('#suggestions').fadeOut();
       }, 600);
       $('.email').addClass('load');
  }
}

这是一个快速演示,表明它有效!

如果您可以通过使用data()或类似的方法来避免全局变量,那就更好了,这只是为了演示它是如何完成的。

于 2013-02-17T01:23:29.747 回答