Как сделать автозаполнение JQuery, который передает идентификатор, а не имя? - PullRequest
7 голосов
/ 06 декабря 2010

Я искал автозаполнение пользовательского интерфейса jQuery, потому что мне нужно было <input />, но проблема в том, что мне нужно передать идентификатор завершенного имени. Позвольте мне объяснить:

У меня есть массив имен:

$names = array(
    array('name' => 'John', id => '1'),
    array('name' => 'Sarah', id => '2'),
    array('name' => 'Josh', id => '3)
);

И затем, с AJAX, ввод будет автоматически завершен с одним именем массива, но затем, когда я отправляю, мне нужен идентификатор, а не имя. Как я могу управлять?

Заранее спасибо

Ответы [ 2 ]

14 голосов
/ 06 декабря 2010

Элемент управления JQuery UI Autocomplete может принимать список результатов поиска в виде набора объектов Display / Value.

Из памяти вы создаете объект Json в следующем формате ...

[
    {label:"Display Name for result 1", value:1},
    {label:"Display Name for result 2", value:2},
    {label:"Display Name for result 3", value:3}
]

Свойство label содержит текст для отображения, а значение proberty содержит идентификатор. Эти значения могут быть проверены, когда пользователь выбирает результат поиска. Элемент управления имеет событие <a href="http://jqueryui.com/demos/autocomplete/#event-select">select</a>, которое вы можете прослушивать.

8 голосов
/ 06 декабря 2010

Вам необходимо сохранить идентификатор в скрытом поле.

Этого можно добиться с помощью события "select".http://jqueryui.com/demos/autocomplete/#event-select

В этом примере показано событие выбора http://jqueryui.com/demos/autocomplete/#custom-data

Так что идея состоит в том, чтобы сделать что-то вроде этого:

        select: function( event, ui ) {
            $( "#project-id" ).val( ui.item.value );
            return false;
        }
...