根据另一个下拉列表填充一个下拉列表,然后重定向
我正在尝试构建一个双层下拉菜单,其中第二个下拉菜单填充第二个下拉菜单。 我在网站上发现了很多例子,但是我希望我的菜单在第二个菜单被选中后重定向到一个页面,并且不能显示出来。
我对JS的速度并不满意,所以请耐心等待。
下面的代码是另一篇文章的一个例子:
<script type="text/javascript">
function configureDropDownLists(ddl1,ddl2) {
var colours = new Array('Black', 'White', 'Blue');
var shapes = new Array('Square', 'Circle', 'Triangle');
var names = new Array('John', 'David', 'Sarah');
switch (ddl1.value) {
case 'Colours':
document.getElementById(ddl2).options.length = 0;
for (i = 0; i < colours.length; i++) {
createOption(document.getElementById(ddl2), colours[i], colours[i]);
}
break;
case 'Shapes':
document.getElementById(ddl2).options.length = 0;
for (i = 0; i < colours.length; i++) {
createOption(document.getElementById(ddl2), shapes[i], shapes[i]);
}
break;
case 'Names':
document.getElementById(ddl2).options.length = 0;
for (i = 0; i < colours.length; i++) {
createOption(document.getElementById(ddl2), names[i], names[i]);
}
break;
default:
document.getElementById(ddl2).options.length = 0;
break;
}
}
function createOption(ddl, text, value) {
var opt = document.createElement('option');
opt.value = value;
opt.text = text;
ddl.options.add(opt);
}
然后调用它
<select id="ddl" onchange="configureDropDownLists(this,'ddl2')">
<option value=""></option>
<option value="Colours">Colours</option>
<option value="Shapes">Shapes</option>
<option value="Names">Names</option>
</select>
<select id="ddl2">
</select>
这一切都正常,但我希望页面在第二个下拉列表中进行选择后,重定向到网站上的某个位置。
任何人都可以帮助如何调整代码来实现这一目标吗?
谢谢
在第二个下拉列表中进行选择后,我希望页面重定向到网站上的某个位置。
钩住第二个<select>
元素的change
事件,然后从那里提交表单:
<select id="ddl2" onChange="redirect(this)">
</select>
function redirect(select) {
// The simplest way: call submit on the form element the select belongs to:
select.form.submit();
}
但是您也可以在提交之前动态更改表单的目标属性,或者仅导航离开。
更新:要进行提交工作,您当然需要为您选择一些name
属性,如:
<form action="/router.php" method="GET">
<select name="first" onchange="configureDropDownLists(this,'ddl2')">
...
</select>
<select name="second" id="ddl2" onChange="redirect(this)">
</select>
</form>
尽管你的configureDropDownLists
函数可能起作用,但你可以通过不使用switch语句来改进它,而是使用对象字面值,并且在执行同样的事情之前选择一个选项值数组,如果在对象中找到了一个:
function configureDropDownLists(firstSelect, secondId) {
var map = {
"colours": ['Black', 'White', 'Blue'],
"shapes": ['Square', 'Circle', 'Triangle'],
"names": ['John', 'David', 'Sarah']
};
var value = firstSelect.value.toLowerCase();
var optionsArr = map[value];
var secondSelect = document.getElementById(secondId);
secondSelect.options.length = 0; // remove all options
if (optionsArr) {
for (var i=0; i<optionsArr.length; i++) {
createOption(secondSelect, optionsArr[i], optionsArr[i]);
}
}
}
链接地址: http://www.djcxy.com/p/42197.html
上一篇: Populate one dropdown based on selection in another then redirect