JQuery Autocomplete - нет результата сообщения - PullRequest
5 голосов
/ 29 декабря 2011

Я бы хотел, чтобы при автозаполнении отображалось «нет результатов» в выпадающем списке , если результат не найден.

Моя ситуация похожа на пример JQuery по умолчанию.

$(function() {
    var availableTags = [
        "ActionScript",
        "AppleScript",
        "Asp",
        "BASIC",
        "C",
        "C++",
        "Clojure",
        "COBOL",
        "ColdFusion",
        "Erlang",
        "Fortran",
        "Groovy",
        "Haskell",
        "Java",
        "JavaScript",
        "Lisp",
        "Perl",
        "PHP",
        "Python",
        "Ruby",
        "Scala",
        "Scheme"
        ];
    $( "#tags" ).autocomplete({
        source: availableTags
    });
});

Спасибо за вашу помощь.

Ответы [ 2 ]

10 голосов
/ 29 декабря 2011

Вот один из способов сделать это:

$(function() {
    var availableTags = [ /* snip */];  
    var NoResultsLabel = "No Results";

    $("#tags").autocomplete({
        source: function(request, response) {
            var results = $.ui.autocomplete.filter(availableTags, request.term);

            if (!results.length) {
                results = [NoResultsLabel];
            }

            response(results);
        },
        select: function (event, ui) {
            if (ui.item.label === NoResultsLabel) {
                event.preventDefault();
            }
        },
        focus: function (event, ui) {
            if (ui.item.label === NoResultsLabel) {
                event.preventDefault();
            }
        }
    });
});

По сути, вам необходимо предоставить ссылку на функцию в виде source для автозаполнения.Внутри этой функции вы можете использовать ту же функцию полезности ($.ui.autocomplete.filter) для фильтрации результатов.Затем вы можете увидеть, если массив результатов пуст.Если это так, вы можете добавить сообщение по умолчанию в список результатов.

Два других указанных мной параметра не позволяют выбрать или сфокусировать параметр Нет результатов .

Пример: http://jsfiddle.net/er6LF/

0 голосов
/ 29 декабря 2011

Эта скрипка имеет рабочий и функциональный пример для вас: http://jsfiddle.net/andrewodri/wAg4g/

Я изменил это:

$("#tags").autocomplete({source: availableTags});

Для этого:

$("#tags").autocomplete(availableTags);

Вы можете видеть, что он работает в последней версии jQuery и имеет подключаемый модуль в разделе «Управление ресурсами», взятый из: http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/.

Обновление: Приведенный выше код работает, если вы используете плагин, на который есть ссылка ... Если нет, похоже, он работает как есть :) Обратите внимание, что я добавил код в $(document).ready();, что, возможно, мешало, если работать.Пожалуйста, посмотрите эту раздвоенную скрипку: http://jsfiddle.net/andrewodri/VLKwe/

Надеюсь, это поможет!

...