2

jQueryオートコンプリートを使用して、「source:」の値が使用可能であるが、入力している値と一致しない場合に、すべてのソースを一度に表示するようにすることは可能ですか?

IEで、次のコードを指定して、「パイナップル」と入力した場合、すべてのプログラミング言語を表示するのではなく、どのように表示しますか?

<script>
$(function() {
    var availableTags = [
        "JavaScript",
        "Perl",
        "PHP",
        "Python",
        "Ruby"
    ];
    $( "#tags" ).autocomplete({
        source: availableTags
    });
});
</script>
<input type="text" id="tags" />
4

2 に答える 2

6

sourceカスタム関数でプロパティを使用します。以下に示すカスタム関数は、オートコンプリートの元の動作を模倣し、入力されたテキストを使用可能なタグ内の部分文字列として検索します。一致するものが見つからない場合は、使用可能なすべてのタグが返されます。

$(function() {
    var availableTags = [
        "JavaScript",
        "Perl",
        "PHP",
        "Python",
        "Ruby"
    ];
    $("#tags").autocomplete({
        source: function(request, response) {
            var term = request.term.toLowerCase();
            var matchingTags = $.grep(availableTags, function(tag) {
                return tag.toLowerCase().indexOf(term) >= 0;
            });
            response(matchingTags.length ? matchingTags : availableTags);
        }
    });
});​

ここでデモ

于 2012-12-04T19:34:58.707 に答える
3

sourceカスタムコールバックを書くだけです。

例えば:

source: function(req, res){
    res(['w00t', 'yay']);
}

DOCを参照してください

あなたの場合(擬似コード):

source: function(req, res){
     //find `req` in array
     if not found:
     res(availableTags);
     else:
     res({subset of availableTags});
}
于 2012-12-04T19:22:31.227 に答える