javascript - 根据另一个下拉菜单的选择更改第二个下拉菜单的值

标签 javascript php html css

我有两个下拉菜单,分别是年龄、年龄从和年龄到。这些下拉列表中的值范围为 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/

相关文章:

javascript - 如何将选项从 PHP 传递到 Javascript?

php - 使用左连接时,如果出现重复行,如何将一个字段的所有数据放入数组中

html - 使用 Bootstrap 4 的导航下拉悬停

javascript - 删除移动 View 粘性js上的粘性导航栏

javascript - jquery 中的 mootools 双美元等价物

php - 具有相同 URL 的自定义 404 错误页面

javascript - CSS 使用 flexbox 缩放 svg

html - 尝试使用 php 数据在 css 中创建图表

javascript - Vue.js 2.如何在axios拦截器中使用Vuex

javascript - 使用replaceChild更改节点