我想創建兩個下拉列表,類別和項目。根據其他下拉列表的選擇填充一個下拉列表
如果我選擇一個名爲汽車的類別,那麼項目下拉列表應該有本田,沃爾沃,日產。
如果我選擇一個名爲手機的類別,那麼項目下拉列表中應該有這個iPhone,三星,諾基亞。
我該怎麼做? 我知道我不能用純HTML完成它。
我想創建兩個下拉列表,類別和項目。根據其他下拉列表的選擇填充一個下拉列表
如果我選擇一個名爲汽車的類別,那麼項目下拉列表應該有本田,沃爾沃,日產。
如果我選擇一個名爲手機的類別,那麼項目下拉列表中應該有這個iPhone,三星,諾基亞。
我該怎麼做? 我知道我不能用純HTML完成它。
工作演示http://jsfiddle.net/kasperfish/r7MN9/3/(用jQuery)
cars=new Array("Mercedes","Volvo","BMW","porche");
phones=new Array('Samsung','Nokia','Iphone');
populateSelect();
$(function() {
$('#cat').change(function(){
populateSelect();
});
});
function populateSelect(){
cat=$('#cat').val();
$('#item').html('');
if(cat=='car'){
cars.forEach(function(t) {
$('#item').append('<option>'+t+'</option>');
});
}
if(cat=='phone'){
phones.forEach(function(t) {
$('#item').append('<option>'+t+'</option>');
});
}
}
修訂:使用eval(),以便能夠爲您想添加儘可能多的陣列。 JSFIDDLE DEMO
cars=new Array("Mercedes","Volvo","BMW","porche");
phones=new Array('Samsung','Nokia','Iphone');
names=new Array('Kasper','Elke','Fred','Bobby','Frits');
colors=new Array('blue','green','yellow');
populateSelect();
$(function() {
$('#cat').change(function(){
populateSelect();
});
});
function populateSelect(){
cat=$('#cat').val();
$('#item').html('');
eval(cat).forEach(function(t) {
$('#item').append('<option>'+t+'</option>');
});
}
根據您的最終目標是什麼,您可以通過多種方式實現此目標。這是最常見的兩個。
這是基本過程:
AJAX(用最少的頁面負載是最完美的體驗):
如果您不想使用AJAX,您可以非常輕鬆地將表單發佈到服務器端處理程序,從類別下拉列表中獲取值,找到項目下拉列表的值以及然後呈現您爲其設置類別下拉列表值的HTML響應並將其禁用(因此,如果用戶想要更改類別,則必須使用後退按鈕)並填充項目下拉列表。
我希望這是不夠清晰,這是一個非常寬泛的主題覆蓋沒有得到太羅嗦了。 –
非常感謝您的幫助。 – sapan
如果我想讓數組來自MySQL數據會怎麼樣?你能幫我嗎?謝謝! – xjshiya
@xjshiya - 對於您的特定情況可能已經太晚了,但作爲一般答案:最有效的方法是使用ajax調用頁面服務器端。例如,該頁面執行查詢並將結果作爲ajax或xml返回,然後使用它填充該字段。 –