显示/隐藏下拉选项取决于另一个下拉选择

Show/Hide Dropdown Option Depend on Another Dropdown Selection

本文关键字:另一个 选择 取决于 选项 显示 隐藏      更新时间:2023-09-26

我正在尝试的是,我想显示基于第一个下拉选择的第二个下拉选项-

$(document).ready(function(){
    $("#type").change(function(){
        $(this).find("option:selected").each(function(){
            if($(this).attr("value")=="1"){
                $("#grouping_type option[value=" + 1 + "]").hide();
                $("#grouping_type option[value=" + 3 + "]").hide();
                $("#grouping_type option[value=" + 4 + "]").hide(); 
            }
            else{
                $("#grouping_type option[value=" + 1 + "]").show();
                $("#grouping_type option[value=" + 3 + "]").show();
                $("#grouping_type option[value=" + 4 + "]").show();
            }
            if($(this).attr("value")=="2"){
                $("#grouping_type option[value=" + 1 + "]").hide();
                $("#grouping_type option[value=" + 5 + "]").hide(); 
            }
            else{
              $("#grouping_type option[value=" + 1 + "]").show();
              $("#grouping_type option[value=" + 5 + "]").show();
            }
            if($(this).attr("value")=="3"){
                $("#grouping_type option[value=" + 2 + "]").hide();
                $("#grouping_type option[value=" + 3 + "]").hide();
                $("#grouping_type option[value=" + 4 + "]").hide();
                $("#grouping_type option[value=" + 5 + "]").hide();
            }
            else{
                $("#grouping_type option[value=" + 2 + "]").show();
                $("#grouping_type option[value=" + 3 + "]").show();
                $("#grouping_type option[value=" + 4 + "]").show();
                $("#grouping_type option[value=" + 5 + "]").show();  
            }
        });
    }).change();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="type">
    <option value="none">Select Any One</option>
    <option value="1">one</option>
    <option value="2">two</option>
    <option value="3">three</option>
</select>
<br>
Dependable Dropdown Show/Hide
<br>
<select id="grouping_type">
    <option value="none">Select Group Type</option>
    <option value="1">group_1</option>
    <option value="2">group_2</option>
    <option value="3">group_3</option>
    <option value="4">group_4</option>
    <option value="5">group_5</option>
</select>

但它不起作用,它在做奇怪的行为。

有人能帮忙吗?

实际上您的嵌套if-else组合是错误的。让我们检查一下,如果我从类型组合中选择"一"。如果您检查值=="1"的第一个条件将隐藏选项,但

第二个如果检查发送回else语句及其再次设置的显示属性块等。

您可以在条件检查之前为所有选项显示setdisplay:block(.show()),然后为特定选项显示setdisplay:none(.hide())。

我更新了你的代码。这是

$(document).ready(function(){
    $("#type").change(function(){
        $(this).find("option:selected").each(function(){
             $("#grouping_type option[value=" + 1 + "]").show();
             $("#grouping_type option[value=" + 2 + "]").show();
             $("#grouping_type option[value=" + 3 + "]").show();
             $("#grouping_type option[value=" + 4 + "]").show();
             $("#grouping_type option[value=" + 5 + "]").show();
            if($(this).attr("value")=="1"){
                $("#grouping_type option[value=" + 1 + "]").hide();
                $("#grouping_type option[value=" + 3 + "]").hide();
                $("#grouping_type option[value=" + 4 + "]").hide(); 
            }
            else if($(this).attr("value")=="2"){
                $("#grouping_type option[value=" + 1 + "]").hide();
                $("#grouping_type option[value=" + 5 + "]").hide(); 
            }
            else if($(this).attr("value")=="3"){
                $("#grouping_type  option[value=" + 2 + "]").hide();
                $("#grouping_type  option[value=" + 3 + "]").hide();
                $("#grouping_type  option[value=" + 4 + "]").hide();
                $("#grouping_type  option[value=" + 5 + "]").hide();
            }
        });
    }).change();
});

第一个建议:保留不同的选择框本身,并根据选择进行隐藏和显示,原因是选项可能无法在不同的浏览器中隐藏和显示

第二个建议:使用选项组,可以帮助充分显示和隐藏特定类别的东西。

你可以试试这个-

$(document).ready(function()
{
    $("#type").change(function ()
    {
        $("#grouping_type").children("option").show();
        $("#grouping_type option[value='"+ $('#type').val() +"']").hide();
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="type">
    <option value="none">Select Any One</option>
    <option value="1">one</option>
    <option value="2">two</option>
    <option value="3">three</option>
</select>
<br>
Dependable Dropdown Show/Hide
<br>
<select id="grouping_type">
    <option value="none">Select Group Type</option>
    <option value="1">group_1</option>
    <option value="2">group_2</option>
    <option value="3">group_3</option>
    <option value="4">group_4</option>
    <option value="5">group_5</option>
</select>

我想,你已经有了完整的答案:)。