我有两个下拉菜单,分别是年龄、年龄从和年龄到。这些下拉列表中的值范围为 17-50。
如果用户从第一个下拉菜单中选择 25
,那么在第二个框中,用户可以选择一个低于该值的值,这既不理想,也没有意义。从第一个下拉菜单中选择后,有没有办法让第二个下拉菜单开始?因此,如果用户从第一个下拉列表中选择年龄 25
,则第二个下拉列表将从 26
开始。
作为进一步检查,用户可以先进入第二个下拉菜单,选择一个会使上述检查无效的选项。在这种情况下,是否还有一种方法可以在选择第一个下拉菜单后仅启用第二个下拉菜单?
这是我的下拉列表的定义方式:
Age from:
<select>
<option value="none"></option>
<?php
for ($i=17; $i<=50; $i++)
{
?>
<option value="<?php echo $i;?>"><?php echo $i;?></option>
<?php
}
?>
</select>
to:
<select>
<option value="none"></option>
<?php
for ($i2=18; $i2<=50; $i2++)
{
?>
<option value="<?php echo $i2;?>"><?php echo $i2;?></option>
<?php
}
?>
</select>
最佳答案
试试这个,你不能没有另一个:
Age from:
<select id="age_a" onchange="checkages_a()">
<option value="none"></option>
<?php
for($i = 17; $i <= 49; ++$i) {
echo "\t", '<option value="', $i, '">', $i, '</option>', "\n";
}
?>
</select>
to:
<select id="age_b" onchange="checkages_b()">
<option value="none"></option>
<?php
for($i = 18; $i <= 50; ++$i) {
echo "\t", '<option value="', $i, '">', $i, '</option>', "\n";
}
?>
</select>
版本 A
<script type="text/javascript">
var age_a = document.getElementById("age_a");
var age_b = document.getElementById("age_b");
function checkages_a() {
var a = typeof(age_a.options[age_a.selectedIndex]) !== 'undefined' ? age_a.options[age_a.selectedIndex].value : 0;
var b = typeof(age_b.options[age_b.selectedIndex]) !== 'undefined' ? age_b.options[age_b.selectedIndex].value : 0;
if(b == 'none' || a > b)
age_b.selectedIndex = age_a.selectedIndex - 1;
}
function checkages_b() {
var a = typeof(age_a.options[age_a.selectedIndex]) !== 'undefined' ? age_a.options[age_a.selectedIndex].value : 0;
var b = typeof(age_b.options[age_b.selectedIndex]) !== 'undefined' ? age_b.options[age_b.selectedIndex].value : 0;
if(!b || b == 'none')
age_b.selectedIndex = age_a.selectedIndex - 1;
if(a == 'none' || b < a)
age_a.selectedIndex = age_b.selectedIndex + 1;
}
</script>
版本 B
<script type="text/javascript">
var age_a = document.getElementById("age_a");
var age_b = document.getElementById("age_b");
function checkages_a() {
var a = typeof(age_a.options[age_a.selectedIndex]) !== 'undefined' ? age_a.options[age_a.selectedIndex].value : 0;
var b = typeof(age_b.options[age_b.selectedIndex]) !== 'undefined' ? age_b.options[age_b.selectedIndex].value : 0;
if(b == 'none' || a >= b)
age_b.selectedIndex = age_a.selectedIndex;
}
function checkages_b() {
var a = typeof(age_a.options[age_a.selectedIndex]) !== 'undefined' ? age_a.options[age_a.selectedIndex].value : 0;
var b = typeof(age_b.options[age_b.selectedIndex]) !== 'undefined' ? age_b.options[age_b.selectedIndex].value : 0;
if(!b || b == 'none')
age_b.selectedIndex = age_a.selectedIndex;
if(a == 'none' || b <= a)
age_a.selectedIndex = age_b.selectedIndex;
}
</script>
关于javascript - 根据另一个下拉菜单的选择更改第二个下拉菜单的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36321640/