我想创建两个下拉列表,类别和项目。
如果我选择名为汽车的类别之一,那么项目下拉列表应该有本田、沃尔沃、日产。
如果我选择名为 phone 的类别之一,则项目下拉列表应该有这个 iPhone、Samsung、Nokia。
我怎样才能做到这一点?我知道我不能用纯 HTML 做到这一点。
我想创建两个下拉列表,类别和项目。
如果我选择名为汽车的类别之一,那么项目下拉列表应该有本田、沃尔沃、日产。
如果我选择名为 phone 的类别之一,则项目下拉列表应该有这个 iPhone、Samsung、Nokia。
我怎样才能做到这一点?我知道我不能用纯 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 演示
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>');
});
}
根据您的最终目标,您可以通过多种方式实现这一目标。这里有 2 个最常见的。
这是基本过程:
AJAX(页面加载最少的最无缝体验):
如果您不想使用 AJAX,您可以非常轻松地将表单发布到服务器端处理程序,从类别下拉列表中获取值,找到项目下拉列表的值,然后呈现您的 HTML 响应您为类别下拉菜单设置一个值并将其禁用(因此如果用户想要更改类别,则必须使用后退按钮)并填充项目下拉菜单。