简体   繁体   English

在更改另一个下拉选项时隐藏下拉选项

[英]hide dropdown option on change of another dropdown option

I have tried this, but not working fine. 我已经尝试过了,但是不能正常工作。 HTML: HTML:

 <div>
 <select id="color" name="color" onchange="myFunction()">                
    <option value=""> choose options </option>                
    <option value="1">AB</option>
    <option value="2">ABC</option>
    <option value="3">ABCD</option>
</select>
<select id="size" name="size" >             
    <option value=""> choose options </option>
    <option value="3" class="27">Apple </option>
    <option value="2" class="26">Orange</option>
    <option value="2" class="26">Orange</option>
    <option value="2" class="26">Orange</option>
    <option value="3" class="28">Grapes</option>
</select>
</div>

SCRIPT: 脚本:

function myFunction()
{
   $variable=$("#size").html();
   $("#size").html($variable); 
   var val=$("#color").find(":selected").val();
   $("#size option[value!="+val+"]").remove();
}

in place of .remove() I tried .hide() which seems to be not working. 代替.remove(),我尝试了.hide(),这似乎不起作用。 Could anyone help me out with this? 有人可以帮我吗?

You can make a mix of JS and CSS. 您可以混合使用JS和CSS。

So we "reset" the size select, by removing all the disabled and also the selected . 所以我们“复位”的大小进行选择,通过删除所有的disabled ,也是selected

Something like this: 像这样:

 $(document).ready(function () { var colors = $('#color'), size = $('#size'); colors.change(function () { var val = $(this).find(":selected").val(); size.find('option').removeAttr('disabled'); size.find('option:selected').removeAttr('selected'); size.find("option[value!=" + val + "]").attr('disabled', 'disabled'); }) }) 
 option:disabled { display: none; } option:first-child { display: block; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div> <select id="color" name="color"> <option value="">choose options</option> <option value="1">AB</option> <option value="2">ABC</option> <option value="3">ABCD</option> </select> <select id="size" name="size"> <option value="">choose options</option> <option value="3" class="27">Apple</option> <option value="2" class="26">Orange</option> <option value="2" class="26">Orange</option> <option value="2" class="26">Orange</option> <option value="3" class="28">Grapes</option> </select> </div> 

Edit 1: 编辑1:

Using data-group instead of class or value 使用data-group代替classvalue

 $(document).ready(function () { var colors = $('#color'), size = $('#size'); colors.change(function () { var val = $(this).find(":selected").attr('data-group'); size.find('option').removeAttr('disabled'); size.find('option:selected').removeAttr('selected'); size.find("option[data-group!=" + val + "]").attr('disabled', 'disabled'); }) }) 
 option:disabled { display: none; } option:first-child { display: block; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div> <select id="color" name="color"> <option value="">choose options</option> <option value="1" data-group="1">AB</option> <option value="2" data-group="2">ABC</option> <option value="3" data-group="3">ABCD</option> </select> <select id="size" name="size"> <option value="">choose options</option> <option value="3" class="27" data-group="3">Apple</option> <option value="2" class="26" data-group="2">Orange</option> <option value="2" class="26" data-group="2">Orange</option> <option value="2" class="26" data-group="2">Orange</option> <option value="3" class="28" data-group="3">Grapes</option> </select> </div> 

You should show all options before hide. 隐藏之前,您应该显示所有选项。

 function myFunction() { $variable=$("#size").html(); $("#size").html($variable); var val=$("#color").find(":selected").val(); $("#size option").show(); $("#size option[value!="+val+"]").hide(); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div> <select id="color" name="color" onchange="myFunction()"> <option value=""> choose options </option> <option value="1">AB</option> <option value="2">ABC</option> <option value="3">ABCD</option> </select> <select id="size" name="size" > <option value=""> choose options </option> <option value="3" class="27">Apple </option> <option value="2" class="26">Orange</option> <option value="2" class="26">Orange</option> <option value="2" class="26">Orange</option> <option value="3" class="28">Grapes</option> </select> </div> 

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM