我想创建两个下拉列表,一个是分类,一个是项。
如果我选择名为“汽车”的类别,则项下拉列表应该有本田、沃尔沃、日产。
如果我选择名为“手机”的类别,则项下拉列表应该有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,可以非常容易地将表单POST到服务器端处理程序,获取类别下拉列表中的值,查找项目下拉列表的值,然后在HTML响应中呈现,设置类别下拉菜单的值并禁用它(因此如果用户想要更改类别,则必须使用后退按钮),并填充项目下拉菜单。