从jQuery Autocomplete获取所选对象

时间:2011-10-11 15:44:34

标签: jquery autocomplete jquery-autocomplete

我正在使用jQuery 1.8 Autocomplete

有没有办法让所选对象在其中一个事件处理程序之外?

我正在尝试做类似的事情......

 $("#searchUsers").autocomplete({
        source: 'Users/List',
  });

  $("#addUser").click(function() {
       // get the selected user Id
       var item = $("#searchUsers").autocomplete('selected');
       alert(item.Id);
  });

我看不出有任何办法,但这似乎是一个非常明显的要求。

4 个答案:

答案 0 :(得分:0)

默认行为是选择项目时,该值将放在文本框中。所以你可以通过$("#searchUsers").val()来实现它。

如果您需要来自所选项目的更多信息,则需要传递select事件处理程序,并在该处理程序中将信息存储在其他位置。

答案 1 :(得分:0)

select事件添加到自动填充功能:

search: function (event, ui) {
        $("#searchUsers").val('');
    },
select: function (event, ui) {
   foo = ui.item.label;
    $("#bar").val(ui.item.id);
   baz = (ui.item.JsonField);
}

查看“事件”标签here

修改search事件添加到函数中。我每次用户进行搜索时都使用search事件清除字段/变量

答案 2 :(得分:0)

我遇到了同样的问题。我可以将所选项目作为对象进行访问。

$("#searchUsers").data("autocomplete").selectedItem

答案 3 :(得分:0)

老问题,但仍然......

只需定义一个JavaScript变量,然后在select事件中,将对象设置为该变量。例如:

$(function () {
    var object_selected= -1;
    $("#q").autocomplete({
            source: "path/to/jsondata",
            minLength: 3,
            select: function (event, ui) { //This is the event that you need to implement
                $('#q').val(ui.item.value);
                object_selected = ui.item; //This is what you will use later.
                return true;
            }
    });
});