自动完成:如何仅使用以input-word开头的元素更改结果列表?

时间:2012-02-22 10:23:16

标签: jquery jquery-ui autocomplete

我有这段代码:

<script type="text/javascript">
    var myList = [ "Avellino", "Enna", "Frosinone" ];

    $("#myTextBox").autocomplete({
        source: myList,
        appendTo: "#myOwnMenuProvince"
    });    
</script>

现在,如果我用e数字,我只想在列表中看到 e开头的单词,而不是e。因此,在上面的示例中,只有Enna

我该怎么做?

1 个答案:

答案 0 :(得分:2)

默认情况下,插件使用方法$.ui.autocomplete.filter。此方法使用数据的标签/值属性上的正则表达式执行grep,并返回已过滤的数据。让我们从中激励自己进行过滤。

要使用您自己的过滤方法,请使用source选项作为回调。

  • request参数是包含一个属性term的对象。它包含要搜索的文本,基本上是输入字段的值。因此,如果您在输入字段中输入“en”,request.term将具有该值。

  • response参数是回调。您调用它,传递过滤后的数据,以显示数据,基本上显示结果弹出菜单。

基本上,你会过滤你的数据并将过滤后的数组传递给`response'回调。

这是一种方法:

$("#myTextBox").autocomplete({
    source: function(request, response) {
        // filter your data
        var data = $.grep(myList, function(value) {
            return value.substring(0, request.term.length).toLowerCase() == request.term.toLowerCase();
        });
        // pass it to the response callback for display
        response(data);
    }
});​

<强> DEMO