我在網上看了看,閱讀了有關使用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