autocomplete: Как я могу изменить список результатов только с элементами, которые начинаются с input-word? - PullRequest
2 голосов
/ 22 февраля 2012

У меня есть этот код:

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

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

Теперь, если я наберу цифру e, я бы хотел видеть в списке только слова, которые начинаются с e, но не содержат e. Так, в приведенном выше примере только Enna.

Как я могу это сделать?

1 Ответ

2 голосов
/ 22 февраля 2012

По умолчанию плагин использует метод $.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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...