Чтобы немного расширить ответ Эндрю Уиттакера, опция source
функции автозаполнения пользовательского интерфейса jQuery используется для указания массива, содержащего элементы, которые должны отображаться в раскрывающемся списке после запуска виджета. Его можно определить как такой массив, функцию, которая возвращает такой массив, или URL-адрес ресурса, который создает такой массив.
Если массив, который в итоге становится значением source
, пуст, виджет не будет отображать раскрывающийся список. Таким образом, определение source
как функции, способной возвращать непустой массив только при вводе @
, приведет к тому, что виджет будет вести себя так, как вам хочется.
Однако виджет функционирует как часть компонента утилиты управления тегом (в данном документе именуемой упоминание ), которая состоит из 3 компонентов:
Модуль автозаполнения : Компонент, отвечающий за получение и отображение набора элементов, которые можно использовать для создания упоминания, с учетом строки.
Модуль отслеживания упоминаний : компонент, отвечающий за отслеживание данных, связанных с упоминанием; Как минимум, местоположение, а также поверхностные и существенные (если они существуют) значения каждого упоминания должны отслеживаться во всех модификациях текста элемента ввода, к которому прикреплена утилита.
Модуль визуального разграничения упоминаний : Компонент, отвечающий за различие текста упоминания от остального текста в элементе ввода, к которому прикреплена утилита
Дальнейшее изучение реализации оставшихся 2 модулей на простом английском языке было бы утомительно; гораздо лучше смотреть на код! К счастью, я сделал решение, Mentionator , которое является надежным (более того, чем все другие решения, предлагаемые здесь), хорошо структурированным, простым в использовании и обильно прокомментированным. Так что стоит посмотреть, хотите ли вы создать оригинальное решение или справочный материал для создания собственного.