在使用jQuery的UI自动完成时如何引用输入字段?

时间:2011-11-01 15:49:47

标签: jquery user-interface autocomplete

我有一个包含许多输入的表单,所有输入都带有“field”类。在我的JavaScript文件中,我有类似的东西:

$(".field").autocomplete({
    source:"search.php",
    select:function(event,ui){$(???).doStuff();}
    });

我需要的是某种方式来引用用户正在写入的输入字段(即,某些选择器代替“???”),这样我就可以对周围的元素做一些事情。我猜这个答案就像是“ui.field”,“ui.input”或“ui.element”,但是我试过那些和其他没有运气的人,我在文档中也找不到答案。所以我转向你。谢谢!

3 个答案:

答案 0 :(得分:3)

它是this(这是原始元素,未包装),与大多数jQuery事件一样。这可以更好地记录。 :-)所以在你的情况下:

$(".field").autocomplete({
    source:"search.php",
    select:function(event,ui){
        // Here, `this` is the raw DOM element of the field
        $(this).doStuff();
    }
});

示例(live copy):

HTML:

<p>Type a <kbd>t</kbd> then pick a choice. The field will turn green briefly.</p>
<input class="ac" type="text">
<input class="ac" type="text">
<input class="ac" type="text">

JavaScript的:

jQuery(function($) {
  $(".ac").autocomplete({
    source: ["two", "three", "thirty"],
    select: function(event, ui) {
      var $this = $(this);
      $this.css("color", "green");
      setTimeout(function() {
        $this.css("color", "");
      }, 500);
    }
  });
});

答案 1 :(得分:2)

我很确定this.id可以解决这个问题。

$(".field").autocomplete({
source:"search.php",
select:function(event,ui){$("#" + this.id).doStuff();}
});

答案 2 :(得分:0)

您是否尝试过ui.item(ui.item.value,ui.item.id等)?