jQuery UI / Autocomplete - 如何更改默认变量名称?

时间:2010-07-13 15:15:28

标签: jquery json variables autocomplete

jQuery UI自动填充使用变量名“”,“ id ”和“标签”来创建下拉列表。例如:

$("#cities").autocomplete({
    source: "backend/cities.php",
    minLength: 2,
    select: function(event, ui) {
        city = ui.item.id;
        region = ui.item.label;
        country = ui.item.value;
    }
});

当我点击下拉列表中的项目时,当然会运行select:function。但是,我似乎没有对用于填充下拉列表的变量名称( ui.item.label )进行任何控制。当我单击列表并将值( ui.item.value )输入到输入字段时,同样适用。

有没有简单的方法可以更改用于填充下拉列表和输入字段的默认变量名称?

  • 原因是我从远程服务器获取JSON数据,而我无法控制。

  • 我不想编辑.js,因为他们很可能会定期发布.js的新版本。

  • 我真正喜欢的是能够在服务器回调和下拉菜单打开之间编辑变量及其内容。

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

我忘记在这里写下我的答案了。我想到了。自动完成代码中有一个内置的成功处理程序。有了它,您可以从服务器获取变量并将它们捆绑到正确的变量(id,label,value)。像这样使用它:

$("#cities").autocomplete({
    source: function(request, response) {
        $.ajax({
            url: "http://ws.geonames.org/searchJSON",
            dataType: "jsonp",
            data: {
                featureClass: "P",
                style: "full",
                maxRows: 12,
                name_startsWith: request.term
            },
            success: function(data) {
                response($.map(data.geonames, function(item) {
                    return {
                        label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                        value: item.name
                    }
                }))
            }
        })
    },
    minLength: 2,
    select: function(event, ui) {
        // when clicked in list
    },
    open: function() {
        // triggered when the list is opened
    },
    close: function() {
        // triggered when the list is hidden
    }
});