【发布时间】:2011-09-03 17:11:47
【问题描述】:
我正在使用 JQuery 自动完成插件,带有 local data stored in a array:
data = [city1, city2, city3, city1]
一旦用户选择了数据元素,例如city 1,我将它存储在user_input。我使用用户输入来读取包含城市、州邮编和姓名的哈希值。当用户按 Enter 键时,该脚本会在屏幕上显示散列的每个元素。这也很好用:
$(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'])
});
});
如何在 keypress 函数中区分上述数组中的 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}, ....
【问题讨论】:
-
解决方案是不使用城市作为差异化因素。你的
personinfo地图中的key是什么? -
我已经包含了我正在解析的 Hash 对象。
-
等等,这没有任何意义。您想在 city1、city2、city 和 city1 中进行选择。真正的问题是什么?为什么要区分 city1 和 city1 (无法区分)?您能在 jsbin.com 上说明问题吗?
-
我无法让它在 jsbin 上工作,因为我依赖自动完成插件。这真的是一个简单的问题。当您在两个单独的实例中选择 city1 时,您会得到相同的结果。即使例如 city1 是斯普林菲尔德。可能是 Springfield CA 或 NY - 上面的代码总是返回相同的结果,NY。
-
data 是一个可能性数组,用作自动完成插件的数据(见链接)
标签: javascript jquery arrays hash autocomplete