简体   繁体   English

HTML / JS隐藏基于其他选定值的选择选项

[英]HTML/JS Hiding Select options based on another selected value

I have the following two select drop-downs, this one for Office location: 我有以下两个选择下拉菜单,其中一个用于Office位置:

<label class="label_select" for="office">Office<span class="required"><font color="red">*</font></span>
        </label>
        <select class="select" name="office" onchange="divisionSelectHandler(this)" required>
            <option selected disabled style="display:none;" value="">Select Office</option>
            <optgroup label ="Arizona">
                <option value="Glendale">Glendale</option>
                <option value="Mesa">Mesa</option>
                <option value="AZRemote">Remote</option>
                <option value="Tucson">Tucson</option>
                <option value="Yuma">Yuma</option>
            </optgroup>
            <optgroup label="Oregon">   
                <option value="ORRemote">Remote</option>
                <option value="Salem">Salem</option>
            </optgroup>
            <optgroup label="Utah">
                <option value="Orem">Orem</option>
                <option value="UTRemote">Remote</option>
                <option value="Taylorsville">Taylorsville</option>
            <optgroup>

        </select>

and this one for Division: 这是一个部门:

<label class="label_select" for="division">Division<span class="required"><font color="red">*</font></span>
        </label>
        <select class="select" name="division" id="divisionstd" required>
            <option selected disabled style="display:none;" value="">Select Division</option>
            <option value="EarlyIntervention">Early Intervention</option>
            <option value="Employment_Services">Employment Services</option>
            <option value="Family_Services">Family Services</option>
            <optgroup label="OMG-Accounting">OMG-Accounting>
                <option value="AccountingAP">AP</option>
                <option value="AccountingAR">AR</option>
                <option value="AccountingGL">GL</option>
            </optgroup>
            <option value="HR">OMG-HR</option>
            <option value="Residential_Services">Residential</option>
        </select>

What I am trying to do is hide certain Divisions based on the Office that is selected. 我想做的是根据所选的Office隐藏某些部门。 For example, if a user selects "Glendale" from the office drop-down, I would like to hide the OMG-Accounting options from the Divisions drop-down. 例如,如果用户从办公室下拉菜单中选择“ Glendale”,我想从“部门”下拉菜单中隐藏OMG-Accounting选项。 I am just learning JS and have something that hides the whole Divisions drop-down, but how can I hide individual options? 我只是在学习JS,并且有一些东西可以隐藏整个Divisions下拉菜单,但是如何隐藏单个选项? JS: JS:

<script>
function hide(){
var division = document.getElementById('divisionstd');
division.style.visibility = 'hidden';
}

function show(){
var division = document.getElementById('divisionstd');
division.style.visibility = 'visible';
}
function divisionSelectHandler(select){
if(select.value == 'Mesa'){
hide();
}}

</script>

Add id or name or class attribute to your optgroup idnameclass属性添加到您的optgroup

<optgroup label="OMG-Accounting" name="test54" id="test54">OMG-Accounting>
                <option value="AccountingAP">AP</option>
                <option value="AccountingAR">AR</option>
                <option value="AccountingGL">GL</option>
            </optgroup>

JS : JS:

function divisionSelectHandler(select){

    if(select.value == 'Glendale'){
            var ele = document.getElementById('test54')
            ele.style.display = 'none'
    }
}

OR change html like this one.Assign unique lable to each optgroup eg omgaccounting 或像这样更改html。为每个optgroup分配唯一的标签,例如omgaccounting

<optgroup label="omgaccounting">OMG-Accounting>
                <option value="AccountingAP">AP</option>
                <option value="AccountingAR">AR</option>
                <option value="AccountingGL">GL</option>
</optgroup>

JS : JS:

var arrEle = document.querySelectorAll('optgroup[label="omgaccounting"]');;

arrEle[0].style.display = 'none'

You can hide multiple optgroup in this way using class,label or name 您可以使用class,label or name以这种方式隐藏多个optgroup

$("select[name=office]").on("change", function() {
    var getValue  = $(this).val();
  var targetGroup = $("select[name=division] optgroup[label='OMG-Accounting']");
  (getValue=="Glendale") ? targetGroup.hide() : targetGroup.show();
});

working fiddle : https://jsfiddle.net/8et5raex/ 工作提琴: https : //jsfiddle.net/8et5raex/

$("select[name=division] optgroup[label='OMG-Accounting']");

targets optgroup with label='OMG-Accounting' under selection box with name division 在名称division选择框下使用label='OMG-Accounting'目标optgroup

For example, if a user selects "Glendale" from the office drop-down, I would like to hide the OMG-Accounting options from the Divisions drop-down 例如,如果用户从办公室下拉菜单中选择“ Glendale”,我想从“部门”下拉菜单中隐藏OMG会计选项

Try this in your existing code, 在您现有的代码中尝试一下,

    function divisionSelectHandler(select){    
        if(select.value == 'Glendale'){
           $('divisionstd optgroup[label="OMG-Accounting"]').hide();
        }
    }

Select specific option group and hide it, Right now you are hiding entire select element. 选择特定的选项组并将其隐藏,现在,您将隐藏整个选择元素。

Other options 其他选择

1) Hide by option VALUE 1) 按选项VALUE隐藏

$('divisionstd option[value="Family_Services"]').hide();

2) Hide by option TEXT 2) 隐藏选项TEXT

$('divisionstd option[text="OMG-HR"]').hide();

3) Hide OptionGroup by label 3) 按标签隐藏OptionGroup

 $('divisionstd optgroup[label="OMG-Accounting"]').hide(); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 根据另一个选择中选择的值禁用或启用选择选项 - Disable or Enable select Options based on value selected in another select 根据在另一个 Select 中选择的值过滤 Select(下拉)选项 - Filter Select (Drop Down) Options Based on Value Selected in another Select 根据另一个选定的选项更改 select 选项 - Change select options based on another selected option 根据所选值禁用 select2 选项 - Disabling select2 options based on selected value 我想根据第一个 select2 组件的选定值更新另一个 select2 多选组件的选项 - I want to update options of another select2 multiselect component based on selected value of first select2 component HTML选择选项应基于所选值创建动态选择选项 - HTML select option should create dynamic select options based on value selected 如何根据 vue js 选择的另一个 select 选项更改选择选项 - how to change a selections options based on another select option selected by vue js jQuery根据在更改和加载时选择的另一个SELECT删除SELECT选项 - jQuery remove SELECT options based on another SELECT selected on change and on load 隐藏已在 select 框中选择的选项 ReactJS - Hiding options already selected in a select box ReactJS 隐藏选项根据在第一个选项上选择的选项值选择值 - hide option select value based on option value selected on first options
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM