我正在尝试获取jQuery自动完成插件以将本地JSON变量作为输入。一旦用户从自动完成列表中选择了一个选项,我希望相邻的地址字段自动填充。
这是在HTML文件中声明为全局变量的JSON变量:
varJSON_address={
"1": {
"origin": {
"nametag": "Home",
"street": "Easy St",
"city": "Emerald City",
"state": "CA",
"zip": "9xxxx"
},
"destination": {
"nametag": "Work",
"street": "Factory St",
"city": "San Francisco",
"state": "CA",
"zip": "94104"
}
},
"2": {
"origin": {
"nametag": "Work",
"street": "Umpa Loompa St",
"city": "San Francisco",
"state": "CA",
"zip": "94104"
},
"destination": {
"nametag": "Home",
"street": "Easy St",
"city": "Emerald City ",
"state": "CA",
"zip": "9xxxx"
}
}
}
我希望第一个字段显示“origin”名称列表:“Home”,“Work”。然后当选择“Home”时,相邻的字段会自动填充Street:Easy St,City:Emerald City等。
以下是我自动完成的代码:
$(document).ready(function(){
$("#origin_nametag_id").autocomplete(JSON_address, {
autoFill:true,
minChars:0,
dataType: 'json',
parse: function(data) {
var rows = new Array();
for (var i=0; i<=data.length; i++) {
rows[rows.length] = { data:data[i], value:data[i].origin.nametag, result:data[i].origin.nametag };
}
return rows;
}
}).change(function(){
$("#street_address_id").autocomplete({
dataType: 'json',
parse: function(data) {
var rows = new Array();
for (var i=0; i<=data.length; i++) {
rows[rows.length] = { data:data[i], value:data[i].origin.street, result:data[i].origin.street };
}
return rows;
}
});
});
});
所以这个问题确实有两个子部分: 1)如何获得自动完成来处理多维JSON对象? (单击该字段并输入文本时,没有任何反应 - 没有列表) 2)如何根据原始名称标签子阵列填充其他字段(街道,城市等)?
提前致谢!
答案 0 :(得分:1)
只是一个快速的,我相信for循环在这里是错误的,导致列表中没有显示
for (var i=0; i<=data.length; i++) {}
应该是
for (var i=0; i<data.length; i++) {}
less或equal(&lt; =)将导致行中未定义的数组