Jquery Автозаполнение выбранного идентификатора не сохраняется

0

Я пытаюсь получить выбранное значение из автозаполнения jquery по какой-то причине, я не могу получить идентификатор. Я видел решение здесь http://www.codeproject.com/Articles/152558/jQuery-UI-Autocomplete-with-ID, но мои данные возвращаются, как показано ниже. Как мне получить идентификатор сохраненного?

Мои данные

[{"id":3,"homename":"DCosta"}]

Мой код

$("#lastname").autocomplete({
     source: function (request, response) {
     var term = request.term;
     if (term in cache) {
         response(cache[term]);
        return;
     }
      $.ajax({
        type: 'POST',
        url: someurl,
        dataType: 'json',
        data: { "Name": request.term},
        success: function (result) {
              var Surnames = JSON.parse(result.data);
              cache[term] = ($.map(Surnames, function (item) {
               return {
                          label: item.homename,
                          //value: item.id  //<== if I do like this the id show in the text box which I do now want
                          value: item.homename //<== this shows correctly but the id is not accessable
                       }
                 }));
             response(cache[term]);
         },

         error: function (a, b, c) {
                       debugger;
         }
      });

      },
        select: function (event, ui) {
         self.Surname(ui.item.value); // save selected value
          console.log(self.Surname());  // shows ID if value: item.id or just the name

     },
           minLength: 2
});
Теги:
jquery-autocomplete

1 ответ

1
Лучший ответ

Вы могли бы добавить скрытое поле для хранения своего id (пусть он будет myhiddenid идентификатор myhiddenid) и установить значение поля автозаполнения для метки, возвращенной из вашей функции. Добавление return false; отменяет действие по умолчанию для события

Действие по умолчанию - заменить значение текстового поля на значение выбранного элемента.

var myhiddenid = $("#myhiddenid");
var lastname = $("#lastname");

lastname.autocomplete({
     source: function (request, response) {
     var term = request.term;
     if (term in cache) {
         response(cache[term]);
        return;
     }
      $.ajax({
        type: 'POST',
        url: someurl,
        dataType: 'json',
        data: { "Name": request.term},
        success: function (result) {
              var Surnames = JSON.parse(result.data);
              cache[term] = ($.map(Surnames, function (item) {
               return {
                          label: item.homename,
                          value: item.id
                       }
                 }));
             response(cache[term]);
         },

         error: function (a, b, c) {
                       debugger;
         }
      });

      },
        focus: function (event, ui) {
         lastname.val(ui.item.label);
         myhiddenid.val(ui.item.value);
         return false;

     },
        select: function (event, ui) {
         lastname.val(ui.item.label);
         myhiddenid.val(ui.item.value);
         self.Surname(ui.item.value);
         console.log(self.Surname());
         return false;    
     },
           minLength: 2
});
  • 0
    В тот момент, когда я добавляю это значение: item.id в текстовом поле отображается идентификатор. Я добавил это тоже $ ('# фамилия'). Val (ui.item.label); и предположим, что в текстовом поле будет отображаться значение метки, но ничего не происходит. Добавление этого myhiddenid.val (ui.item.value); дать неопределенное
  • 0
    Вы создали скрытый вход на вашем экране? ( <input type="hidden" id="myhiddenid" /> )
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню