Проблема автозаполнения с двумя одинаковыми «значениями» - PullRequest
1 голос
/ 28 мая 2011

Я использую плагин JQuery Autocomplete, в котором данные l ocal хранятся в массиве :

data = [city1, city2, city3, city1]

Когда пользователь выбирает элемент данных, например, city 1, я сохраняю его в user_input. Я использую пользовательский ввод, чтобы прочитать хеш, который содержит город, почтовый индекс штата и имя. Сценарий отображает каждый элемент хэша на экране, когда пользователь нажимает клавишу ввода. Это также прекрасно работает:

  $(document).keypress(function(e) {
      if(e.keyCode == 13) {
          var user_input =  $("input#example").val()

            $.each(personinfo,function(key,value){
                if(value['city']== user_input){
                    $('#city').empty().append(value['city']);
                    $('#state').empty().append(value['state']);
                    $('#zip').empty().append(value['zip']);
                    $('#name').empty().append(value['name']);
                }
})

Проблема возникает, когда есть два идентичных ключа. Например, произнесите имена "John Doe" и "Jane Doe", проживающие в одном городе: city1. Поэтому city1 появляется дважды в массиве данных, как вы видите выше.

data определяется в этом методе:

  var data = new Array();
  $(document).ready(function(){

  $.each(personinfo,function(key,value){
    myarray.push(value['city'])
   });
  });

Как я могу различать city1 и city1 в вышеуказанном массиве в функции нажатия клавиш?

Объект карты personinfo:

{"address":"07288 Albertha Station","city":"Littelside","created_at":"2011-05-25T19:24:51Z","id":1,"name":"Jane Doe","state":"Missouri","updated_at":"2011-05-26T21:25:54Z","zip":"75475-9938"},{OBJECT 2}, {OBJECT 3}, .... 

Ответы [ 2 ]

1 голос
/ 28 мая 2011

Как показывают некоторые комментарии, невозможно решить проблему с идентичными ключами: единственный способ исправить это - использовать не идентичные ключи: -)

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

0 голосов
/ 20 сентября 2012

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

Как и в lookup = { data: ['name1', 'name2', 'name2', 'namex'], ref:[1,2,3,4] }

Так что, когда пользователь выбирает второе «name2», плагин вернет выбранное «name2» и ref 3. Плагин зависит от того, поддерживает ли он эту функциональность, но даже если он не поддерживается, вы можете легко его изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...