[英]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 将
id
或name
或class
属性添加到您的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.