0

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

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

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

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

4

2 回答 2

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可以在此处找到有关该选项的文档和更多信息。

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

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

我建议为您的数组使用一个设置器,它会在您修改数组时自动执行此操作。

于 2012-11-30T15:03:48.413 回答
0

当你更新testdata运行这个:

$('#textboxid').autocomplete('option', 'source', testdata);
于 2012-11-30T15:03:51.123 回答