我在网上看了看,阅读了有关使用JSON和jQuery的下拉列表中的职位。但是,我似乎无法让我的语法正确。当页面加载时,我希望城镇下拉列表包含所有城镇。一旦用户选择一个社区,那么只有该城镇的社区应该显示。
任何帮助表示赞赏。请点击这里查看我的代码http://jsfiddle.net/latoyale/XgxCP/1/
我在网上看了看,阅读了有关使用JSON和jQuery的下拉列表中的职位。但是,我似乎无法让我的语法正确。当页面加载时,我希望城镇下拉列表包含所有城镇。一旦用户选择一个社区,那么只有该城镇的社区应该显示。
任何帮助表示赞赏。请点击这里查看我的代码http://jsfiddle.net/latoyale/XgxCP/1/
我做了一个工作叉:http://jsfiddle.net/ccync/
对于后人,JavaScript代码低于:
// JSON data start
var data = [
[
{optionValue: 0,url: 'Choose Town',community: 'Choose Town'},
{optionValue: 1,url: '/dutchess/amenia',community: 'Amenia'},
{optionValue: 2,url: '/dutchess/arlington',community: 'Arlington'},
{optionValue: 3,url: '/dutchess/barrytown',community: 'Barrytown'}
],
[ {optionValue: 0,url: 'Choose Town',community: 'Choose Town'},
{optionValue: 32,url: '/orange/Campbell-hall',community: 'Campbell Hall'},
{optionValue: 33,url: '/orange/central-valley',community: 'Central Valley'},
{optionValue: 34,url: '/orange/chester',community: 'Chester'},
]
];
// JSON data end
$(function() {
$('#page-changer')[0].reset(); // resets form onload
var $county = $('#county');
var $township = $('#township');
function updateTownshipOptions(){
var selected = $county.val();
if (selected) {
options = [];
var selected_data = data[$county.val()-1];
for (var i=0; i<selected_data.length; i++) {
options.push('<option value="'+selected_data[i].optionValue+'">'+selected_data[i].community+'</option>');
}
$township.html(options.join(''));
}
}
updateTownshipOptions();
$county.change(updateTownshipOptions);
});
谢谢,这绝对是我的原始代码更复杂。如果城镇下降,那么所有的城镇都无法承载。我需要所有“社区”来显示用户是否首先点击城镇。一旦选定了该县下拉菜单,该列表应该只显示该县的城镇。 – latoyale 2012-02-27 18:22:13
问题在于你设置'数据'的方式。循环遍历每个选项集合是不实际的,过滤出“选择城镇”选项并将它们全部放入一个列表中。通常的做法是,您的原始表单包含所有可能的选项。然后,选择一个县时,会触发一个AJAX请求,以便为所选择的选项获取选项。 – 2012-02-27 18:31:29
我可以修改我的数据以适应此功能。一旦我这样做了,我想知道检索社区数据的语法是什么。 – latoyale 2012-02-27 18:36:53
要绑定到'change'事件,而不是'点击事件。 – meagar 2012-02-27 18:04:02