установить критерии соответствия автозаполнения jQuery? - PullRequest
0 голосов
/ 08 февраля 2011

Я написал страницу с автозаполнением пользовательского интерфейса jQuery.

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

Места отформатированы следующим образом:

«Канада»

"Канада -> Альберта"

"Канада -> Британская Колумбия"

"США"

"США -> Алабама"

"США -> Аляска"

и так далее.Итак, я проверил это приложение, набрав «CA», ожидая список стран и штатов, которые обозначаются «CA», например: «Канада», «США -> Калифорния», «Мексика -> Кампече».

Однако, к моему ужасу, я вижу все канадские провинции, перечисленные одна за другой, потому что «CA» совпадает с «CA» в «Канаде».Теперь у меня есть почти двадцать вариантов выбора.

Пользователь должен видеть иерархию с названием страны и названием штата при поиске штата, но «Канада» как страна должна бытьодиночное совпадение как одно местоположение.

Как настроить автозаполнение jQuery, чтобы можно было указывать в таком количестве слов, что должен совпадать только текст справа от "->"?

Прямо сейчас, в моем коде Javascript, у меня есть var местоположения = "[{'label': 'Canada', 'value', 'Canada'}, {'label': 'Canada -> Alberta', 'value':' Alberta '} ...].

Я не хочу, чтобы эта работа выполнялась асинхронно. Боюсь, это приведет к слишком большому количеству вызовов веб-служб.

1 Ответ

0 голосов
/ 09 февраля 2011

Я понял это.Полезно иметь хорошую ссылку на jQuery UI!

Для исходной переменной метода .autocomplete вы можете передать данные автозаполнения или передать обработчик в функцию для получения параметров автозаполнения,например, так:

$('#txtData').autocomplete( source: getData )

В функцию-обработчик будет передано два аргумента, первый - это объект с одним полем: term, который содержит текст, введенный пользователем.Другой - это обработчик еще одной функции.Эта другая функция принимает один параметр, который представляет собой данные, содержащие параметры автозаполнения:

function getData(userData, setAutocompleteData) {
    var userText = userData.term;
    var autocompleteData = getMatchingOptions(userText);
    // getMatchingOptions returns a list of matching autocomplete options
    setAutocompleteData(autocompleteData);
}

Приведенный выше скелет кода в сочетании с вашей реализацией getMatchingOptions должен позволять вам настраивать параметры автозаполнения, отображаемые пользователю..

...