jQuery自动完成 - 添加到底层本地数据源数组

时间:2012-11-30 14:58:52

标签: jquery

在这个使用jQuery自动完成的基本示例中:

$("#textboxid").autocomplete(
    {
        source: testdata,
        delay: 100,
        minLength: 1
    });

其中testdata是本地数据数组,对基础源数组进行任何更改的推荐方法是什么,反映在自动完成选项中?

目前,如果我随后向testdata数组添加一个新项目(即在已经在文本框元素上设置了自动完成功能之后),我在自动完成列表中看不到新选项。如果我动态地向页面添加新文本框并设置为自动完成,则会看到新选项。但现有元素却没有。

2 个答案:

答案 0 :(得分:1)

最灵活的方法是使用回调作为源,它会轮询阵列/对象/服务器以获取数据并返回相应的响应。

以下是您如何测试此内容的示例:

var testdata = ["foo","bar","baz","quux"];
$("#textboxid").autocomplete({
    source: function(request, callback) {
        var possiblematches = testdata.filter(function(v) {
            return v.match($.ui.autocomplete.escapeRegex(request.term));
        });
        callback(possiblematches);
    },
    delay: 100
});

示范:http://jsfiddle.net/Eeg5L/。可以找到source选项的文档和更多信息here

或者,您可以在使用以下命令修改数组后重置源:

$("#textboxid").autocomplete("option","source", testdata);

我建议您为数组使用setter,每当修改数组时都会自动执行此操作。

答案 1 :(得分:0)

更新testdata时,请运行:

$('#textboxid').autocomplete('option', 'source', testdata);