Я использую плагин 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}, ....