我想创建两个下拉列表,类别和项目。根据其他下拉列表的选择填充一个下拉列表
如果我选择一个名为汽车的类别,那么项目下拉列表应该有本田,沃尔沃,日产。
如果我选择一个名为手机的类别,那么项目下拉列表中应该有这个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返回,然后使用它填充该字段。 –