jQuery UI Автозаполнение нескольких значений - как я могу показать список предложений после пробела вместо запятой? - PullRequest
0 голосов
/ 16 февраля 2012

Я пытаюсь использовать плагин AutoComplete для jQuery UI, , в частности, функциональность с несколькими значениями (с локальным массивом). Цель - эффект типа «intellisense».

Окно с предложением появляется * ТОЛЬКО * после того, как у вас есть запятая, разделяющая ваши цели.

Например:

test1, <suggestion list appears>

В моем случае, я хочу, чтобы список предложений отображался после ПРОБЕЛ вместо запятой, т.е.:

test1<space> <suggestion list appears>

Эту функцию (или ее отсутствие) можно увидеть непосредственно на демонстрационной странице, на которую есть ссылка, просто введите «Clojure», и поле будет автоматически заполнено запятой, а затем введя другое слово, например Java, снова откроет предложение. список. Если вы сделаете то же самое, введите Clojure, удалите запятую, затем нажмите пробел, предложения больше не будут появляться.

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

Любая помощь приветствуется - дайте мне знать, если вам нужно больше деталей!

Ответы [ 2 ]

3 голосов
/ 16 февраля 2012

Вы можете изменить поведение вставки, изменив обратный вызов события select.Если вы нажмете «Просмотреть исходный код» на демонстрационной странице, вы увидите this.value = terms.join( ", " ); Просто измените его на this.value = terms.join( " " );

Редактировать: Возможно, вы также захотите отредактировать функцию split() вИсходный код демо:

function split( val ) {
  return val.split( /,\s*/ );
}

(Удалить запятую)

0 голосов
/ 18 июля 2014

это старый вопрос, но мне это тоже нужно. Простое удаление запятой в функции split привело к странному поведению в моем случае.

Calvin L Edit: Вы, вероятно, также захотите отредактировать функцию split () в исходном коде демо:

function split( val ) {
  return val.split( /,\s*/ );
}
(Remove the comma)

Вместо заполнения выбранным значением он также объединяет исходный частичный сегмент: например ввод букв a, aj (и т. д.) + пробел + заполненное слово. Кроме того, самовнушение действовало странно, вместо фильтрации большего количества набранных букв вместо него показывалось больше не связанных результатов.

Решением было просто заменить запятую на пробел:

function split( val ) {
  return val.split( / \s*/ );
}
...