如果选择了另一个选择菜单的值,则显示隐藏的选择菜单

Show hidden select menus if value of another select menu is selected

本文关键字:选择 菜单 显示 隐藏 如果 另一个      更新时间:2023-09-26

我是jQuery和javaScript的新手。我正在使用bootstrap。我有一个可见的选择菜单和两个隐藏的额外选择菜单。我想显示隐藏的选择菜单id用户选择"电视"从可见的选择菜单选项。如果他们从可见的选择菜单中选择任何其他值选项,我需要显示一个简单的文本框,他们可以在其中解释。在网上研究后,我试图用一些js来做,但它不起作用。下面是我的代码,这里是我的jsfiddle链接:https://jsfiddle.net/nx6cc1Lc/

HTML:

<div class="hear-from">
      <div class="selects-4 col-xs-12">
          <label for="heard_tv">Where did you hear about us from?</label>
                <select id="heard_tv" class="form-control selectTV" name="heard_tv">
                     <option>--Choose Option--</option>
                     <option value="TV">TV Commercial</option>
                     <option value="Radio">Radio Advertisement-Other</option>
                     <option value="OT">Other</option>
                </select>
     </div>
     <div class="selects-5 col-xs-6 hidden">
                <select id="heard_from_station" class="form-control selectStation" name="heard_from_station">
                     <option>--Choose Station--</option>
                     <option value="TV:ABC">ABC News</option>
                     <option value="TV:TWCNews">New York 1 - TWC News</option>
                     <option value="TV:BBC">BBC America</option>
                     <option value="TV:CNBC">CNBC</option>
                     <option value="TV:CNN">CNN</option>
                     <option value="TV:Fox News">FOX News</option>
                     <option value="TV:Fox Business">FOX Business</option>
                     <option value="TV:TWCNews">Time Warner News</option>
                     <option value="TV:HLN">Headline News</option>
                     <option value="TV:MSNBC">MSNBC</option>
                     <option value="TV:Other">Other</option>
                </select>
          </div>
          <div class="selects-6 col-xs-6 hidden">
                <select id="heard_from_provider" class="form-control selectProvider" name="heard_from_provider">
                     <option>--Choose Provider--</option>
                     <option value="TVP:ATT">AT & T</option>
                     <option value="TVP:Comcast">Comcast</option>
                     <option value="TVP:Cablevision">Cablevision</option>
                     <option value="TVP:Charter">Charter Comm.</option>
                     <option value="TVP:Cox">Cox Comm.</option>
                     <option value="TVP:DirectTV">DirectTV</option>
                     <option value="TVP:Dish">Dish Network</option>
                     <option value="TVP:TimeWarner">Time Warner Cable</option>
                     <option value="TVP:VerFiOS">Verizon FiOS</option>
                     <option value="TVP:Antenna">Over the Air / Antenna</option>
                     <option value="TVP:Other">Other TV Provider</option>
                 </select>
             </div>
     </div>
Javascript:

// show tv station and provider menus if TV selected
    $(document).ready(function(){
        $('#heard_tv').on('change', function() {
          if ( this.value === "TV")
          //.....................^.......
          {
            $("#heard_from_station").removeClass('hidden');
            $("#heard_from_provider").removeClass('hidden');
          }
          else
          {
            $('#heard_from_station').removeClass().addClass('hidden');
            $('#heard_from_provider').removeClass().addClass('hidden');
          }
        });
    });

按如下方式更新脚本

// show tv station and provider menus if TV selected
    $(document).ready(function(){
        $('#heard_tv').on('change', function() {
          if ( this.value === "TV")
          {
            $("#heard_from_station").parent().removeClass('hidden');
            $("#heard_from_provider").parent().removeClass('hidden');
          }
          else
          {
            $('#heard_from_station').parent().addClass('hidden');
            $('#heard_from_provider').parent().addClass('hidden');
          }
        });
    });

由于你的html在父元素".parent()"中包含"hidden"类,你需要在父元素上添加/移除类。或者,您也可以为父元素提供ID,并直接在脚本中使用这些ID,而不使用".parent()"。

只需使用jquery的show()和hide()即可。下面是您的问题的代码部分

<script src="jquery.min.js"></script>
<script src="sample.js"></script>
   <div class="hear-from">
                                            <div class="selects-4 col-xs-12">
                                                <label for="heard_tv">Where did you hear about us from?</label>
                                                    <select id="heard_tv" class="form-control selectTV" name="heard_tv">
                                                        <option>--Choose Option--</option>
                                                        <option value="TV">TV Commercial</option>
                                                        <option value="Radio">Radio Advertisement-Other</option>
                                                        <option value="OT">Other</option>
                                                     </select>
                                            </div>
                                            <div class="selects-5 col-xs-6" style="display:none">
                                                    <select id="heard_from_station" class="form-control selectStation" name="heard_from_station">
                                                        <option>--Choose Station--</option>
                                                        <option value="TV:ABC">ABC News</option>
                                                        <option value="TV:TWCNews">New York 1 - TWC News</option>
                                                        <option value="TV:BBC">BBC America</option>
                                                        <option value="TV:CNBC">CNBC</option>
                                                        <option value="TV:CNN">CNN</option>
                                                        <option value="TV:Fox News">FOX News</option>
                                                        <option value="TV:Fox Business">FOX Business</option>
                                                        <option value="TV:TWCNews">Time Warner News</option>
                                                        <option value="TV:HLN">Headline News</option>
                                                        <option value="TV:MSNBC">MSNBC</option>
                                                        <option value="TV:Other">Other</option>
                                                     </select>
                                            </div>
                                            <div class="selects-6 col-xs-6" style="display:none">
                                                    <select id="heard_from_provider" class="form-control selectProvider" name="heard_from_provider">
                                                        <option>--Choose Provider--</option>
                                                        <option value="TVP:ATT">AT & T</option>
                                                        <option value="TVP:Comcast">Comcast</option>
                                                        <option value="TVP:Cablevision">Cablevision</option>
                                                        <option value="TVP:Charter">Charter Comm.</option>
                                                        <option value="TVP:Cox">Cox Comm.</option>
                                                        <option value="TVP:DirectTV">DirectTV</option>
                                                        <option value="TVP:Dish">Dish Network</option>
                                                        <option value="TVP:TimeWarner">Time Warner Cable</option>
                                                        <option value="TVP:VerFiOS">Verizon FiOS</option>
                                                        <option value="TVP:Antenna">Over the Air / Antenna</option>
                                                        <option value="TVP:Other">Other TV Provider</option>
                                                     </select>
                                            </div>
                                        </div>
 <script>   $(document).ready(function(){
        $('#heard_tv').on('change', function() {
          if ( this.value === "TV")
          //.....................^.......
          {
            $(".selects-5").show();
            $(".selects-6").show();
          }
          else
          {
            $('.selects-5').hide();
            $('.selects-6').hide();
          }
        });
    });</script> 

问题是包含二级选择菜单的div标记是隐藏的,而不是选择菜单本身——即使如此,您的脚本仍试图从选择菜单中删除该类。所以有很多方法可以解决这个问题。

解决这个问题的一种方法是将隐藏类应用于选择菜单而不是div标签。
<div class="selects-5 col-xs-6">
    <select id="heard_from_station" class="form-control selectStation hidden" name="heard_from_station">
                 ...
    </select>
</div>
<div class="selects-6 col-xs-6">
    <select id="heard_from_provider" class="form-control selectProvider hidden" name="heard_from_provider">
                 ...
    </select>
</div>