Требуется автозаполнение, которое возвращает идентификатор и имя из базы данных.

Привет, я новичок в jquery, я делаю проект по отправке писем. В проекте, когда я ввожу поле имени отправителя, оно должно отображать поле автозаполнения. Однако проблема в том, что мне нужен идентификатор пользователя, а не имя (однако я не могу отобразить идентификатор для обычного пользователя сайта). Я думал о том, чтобы сохранить возвращенный идентификатор в скрытом поле и в то же время сохранить имя в таблице.

Пожалуйста, помогите мне, как мне это сделать.

Проблемы 1. Когда я печатаю в текстовом поле, оно может вернуть имя для просмотра пользователем. 2. Я не уверен, как заставить автозаполнение сохранять возвращаемый идентификатор в скрытом теге поля.


person Tumi    schedule 23.05.2011    source источник


Ответы (2)


Вам пригодится плагин Jquery autocomplete. Взгляните на этот блог

person Abdul Kader    schedule 23.05.2011

Автозаполнение jQuery будет работать. Вы можете вернуть данные из вашего ajax-вызова в виде:

    [{"id":1, "label":"Joe"}, {"id":2,"label":"mike"}] (or you can use "value" instead of "label")

Вы можете подписаться на событие select, которое имеет следующую подпись:

    function(event, ui){//ui.item.id will have the value you are looking for}

ui будет иметь свойство элемента, поэтому вы можете использовать ui.item.id и получить идентификатор, который вы ищете. Вот еще полный код. Вам нужно будет заменить свой URL-адрес, и, тем не менее, вашему php нужен поисковый запрос.

  $("#autocomplete").autocomplete({
     source: function(req, resp){
         $.getJSON(){
             "search.php",
             {searchTerm : req.term},
             function(data){
                resp(data);
             }
         }
     },
     select : function(ev, ui){
         alert(ui.item.id);
     }
  })
person ek_ny    schedule 23.05.2011
comment
Я не слишком понимаю, как связать 3 блока кодов вместе. - person Tumi; 23.05.2011
comment
Привет @Tumi-- тебе действительно не нужно. Третий блок — важный. Вам просто нужно убедиться, что вы правильно отправляете данные в php. И вам нужно убедиться, что ваш php возвращает данные в виде данных json (в формате, показанном выше). Когда пользователь начнет вводить автозаполнение, будет вызван исходный метод. Вы используете переменную req, чтобы получить введенный пользователем термин. Затем вы делаете вызов ajax на свою страницу. Переменная resp является обратным вызовом. Вам просто нужно перезвонить и передать результаты (в моей функции я назвал это данными). Выбор вызывается, когда пользователь выбирает его. - person ek_ny; 23.05.2011