Как редактировать ввод в JQuery Autocomplete перед поиском? - PullRequest
3 голосов
/ 29 апреля 2011

У меня есть поле автозаполнения, которое (для целей этого примера, поскольку это простой пример) возвращает список, включающий номера социального страхования. У них есть черты в них для удобочитаемости. Я хочу изменить автозаполнение так, чтобы, если я введу «123456789» или «123-45-6789», он нашел ту же запись в автозаполнении, без необходимости добавлять оба стиля к источнику автозаполнения. Я смотрю на добавление обратного вызова для search, но я рисую бланк о том, как именно это сделать.

Если бы я использовал поиск, извлеченный из источника AJAX, я мог бы просто обрезать ввод на стороне сервера и вернуть любые результаты, которые я хотел. Однако, ради скорости, я предварительно загрузил все данные в Javascript, так что эта опция отключена.

По сути, я хочу знать, как обрезать штрихи от автозаполнения, прежде чем сравнивать его с сохраненными данными (и, предпочтительно, сравнивать его с копией сохраненных данных также с обрезанными штрихами). Практически нулевой документации о том, как использовать параметр search:, поэтому я надеюсь, что кто-то может помочь.

1 Ответ

4 голосов
/ 30 апреля 2011

Один из способов сделать это - предоставить функцию для автозаполнения source:

var ssn = ['123-45-6789', '333-44-5543', '111-34-9696', '555-99-5323'];

$("#ssn").autocomplete({
    source: function(request, response) {
        /* Remove the dashes from the search term: */
        var term = request.term.replace(/-/g, '');
        var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), "i");

        response($.map(ssn, function(el) {
            /* Remove dashes from the source and compare with the term: */
            if (matcher.test(el.replace(/-/g, ''))) {
                return el;
            }
        }));
    }
});

Вот что происходит:

  1. Параметр source принимает параметры request и response.По сути, вы манипулируете request.term (замените тире пустой строкой), прежде чем сравнивать его со списком допустимых значений.

  2. Затем вызовите функцию response с правильными результатами.,В этом примере используется $.map, чтобы вернуть список совпадений, сравнивая термин с каждым элементом в списке (без "-").

Вотрабочий пример: http://jsfiddle.net/andrewwhitaker/r4SzC/

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