根据在第一个选项上选择的选项值隐藏选项选择值

Posted

技术标签:

【中文标题】根据在第一个选项上选择的选项值隐藏选项选择值【英文标题】:hide option select value based on option value selected on first options 【发布时间】:2013-01-13 19:54:39 【问题描述】:

我有两个选择选项字段。

<div style="float:left; width:7%">
<label>Type</label>             
<select name="ostatus" id="ostatus" class="input-small">
<option value="Actual">Actual</option>
<option value="Ghost">Ghost</option>
</select>


<div style="float:left; width:7%">
<label>Upgrade</label>              
<select name="oupg" id="oupg" class="input-small">
<option value="Exp" >Exp</option>
<option value="Post" >Post</option>
<option value="Upgrade" >Upg</option>
<option value="Retail" >Retail</option>
<option value="Prepaid" >Prepaid</option>
</select>

如果在类型选择中选择了 Ghost,我想在升级选项下隐藏选项零售和预付。我该怎么做?我可以隐藏整个 div 容器以进行升级,但我只想隐藏最后两个选项。请提供一些帮助,我们将不胜感激。

【问题讨论】:

【参考方案1】:

你可以使用jquery

$(document).ready(function()
    $('#ostatus').on('change',function() 
        if($(this).val()== 'Ghost')
          $('#oupg') .find ("option[value=Retail]").hide();
           $('#oupg') .find ("option[value=Prepaid]").hide();
        
        else
            $('#oupg') .find ("option[value=Retail]").show();
           $('#oupg') .find ("option[value=Prepaid]").show();
        
    );
);

【讨论】:

非常感谢我选择了这个选项,因为我正在尝试学习 jquery,我实际上理解了这个 =)【参考方案2】:

使用 javascriptdisplay:none css 样式你可以做到这一点:

<head>
    <script type="text/javascript">
        function hideOpt() 
            var type = document.getElementById("ostatus");
            var upgrade = document.getElementById("oupg");
            if (type.options[type.selectedIndex].value == 'Ghost') 
                upgrade.options[3].style.display = 'none';
                upgrade.options[4].style.display = 'none';
                // IE exception
                upgrade.options[3].disabled = true;
                upgrade.options[4].disabled = true;
             else 
                upgrade.options[3].style.display = 'block';
                upgrade.options[4].style.display = 'block';
                // IE exception
                upgrade.options[3].disabled = false;
                upgrade.options[4].disabled = false;
            
        
    </script>
</head>

<label>Type</label>             
<select name="ostatus" id="ostatus" onchange="return hideOpt();" class="input-small">
    <option value="Actual">Actual</option>
    <option value="Ghost">Ghost</option>
</select>


<label>Upgrade</label>              
<select name="oupg" id="oupg" class="input-small">
    <option value="Exp" >Exp</option>
    <option value="Post" >Post</option>
    <option value="Upgrade" >Upg</option>
    <option value="Retail" >Retail</option>
    <option value="Prepaid" >Prepaid</option>
</select>

编辑:

添加了else 语句以在选择“实际”时再次显示选项。

【讨论】:

非常感谢我实际上理解了你的代码(我正在学习),但我选择了 Reshil 发布的 jquery 选项 没问题,有几种不同的方法可以完成您的目标。学习和使用新东西总是很好。祝你好运:)【参考方案3】:

您不能在所有浏览器中隐藏option 元素,但可以禁用它们:

document.querySelector("#oupg option[value=Retail]").disabled = true;
document.querySelector("#oupg option[value=Prepaid]").disabled = true;

这适用于 IE8 及更高版本。


如果你想要IE7及更低的支持,那么:

var opts = document.getElementById("oupg").options;

opts[opts.length - 2].disabled = true;
opts[opts.length - 1].disabled = true;

【讨论】:

以上是关于根据在第一个选项上选择的选项值隐藏选项选择值的主要内容,如果未能解决你的问题,请参考以下文章

获取下拉框第一个选项的值最后一个选项的值第二个选项的值

如何根据先前表单字段的选定选项值隐藏表单字段

使用网站支付标准问题增强定期支付

使用选择器单击后如何隐藏选择选项?

React Hooks-当我在另一个选择上选择一个选项时更改选择选项

选项卡,在第一个选项卡上隐藏上一个,在最后一个选项卡上隐藏下一个