【问题标题】:dropdown list <select> tag hide and sort order下拉列表 <select> 标签隐藏和排序顺序
【发布时间】:2018-10-25 21:05:39
【问题描述】:

我正在开发一个足球联赛网站。我有两个带有条件的下拉列表,第二个下拉列表是基于第一个选择的。

  1. 我想隐藏第二个下拉列表中的选项,默认显示所有选项。只有当我从第一个下拉列表中选择一个选项时,这些选项才应该处于活动状态。
  2. 从第一个下拉列表中选择一个选项时,第二个下拉列表会选择最后一个选项,我需要第二个下拉列表来默认选择第一个选项。

$(document).ready(function() {
 var allOptions = $('#dseason option')
 $('#ldivision').change(function() {
  $('#dseason option').remove()
  var classN = $('#ldivision option:selected').prop('class');
  var opts = allOptions.filter('.' + classN);
  $.each(opts, function(i, j) {
   $(j).appendTo('#dseason');
  });
 });

 //show content script
 $(document).ready(function() {
  //hides dropdown content
  $(".showcontent").hide();
  //unhides first option content
  $("#acd1s2014").show();
  //listen to dropdown for change
  $("#dseason").change(function() {
   //rehide content on change
   $('.showcontent').hide();
   //unhides current item
   $('#' + $(this).val()).show();
  });
 });
 //close script

});
/* dropdown selector */
select {
	font-family: verdana;
  margin-bottom: 1em;
  padding: 5px;
	width: 200px;
  border: 0;
  border-bottom: 2px solid green;
  -webkit-transition: border-bottom 2s; /* Safari */
    transition: border-bottom 2s;
}

select:hover {
  border-bottom: 2px solid;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<select id="ldivision" name="divisionselected">
  <!-- selector name -->
  <option value="" class="dselect">Select Category</option>
  <!-- league season dropdown -->
  <option class="div01" value="Division 01">Division 01</option>
  <option class="div02" value="Division 02">Division 02</option>
</select>

<!-- spacing the selectors -->
&nbsp;&nbsp;&nbsp;

<select id="dseason" name="seasonselected">
  <!-- selector name -->
  <option value="" class="sselect">Select Product</option>
  <!-- league season option 01 -->
  <option value="acd1s2014" class="div01">Season 2014</option>
  <option value="acd1s2015" class="div01">Season 2015</option>
  <option value="acd1s2016" class="div01">Season 2016</option>
  <option value="acd1s2017" class="div01">Season 2017</option>
  <!-- league season option 02 -->
  <option value="acd2s2014" class="div02">Season 2014</option>
  <option value="acd2s2015" class="div02">Season 2015</option>
  <option value="acd2s2016" class="div02">Season 2016</option>
</select>

<!-- dropdown content option 01 -->
<div id="acd1s2014" class="showcontent">ac div 01 s 2014</div>
<div id="acd1s2015" class="showcontent">ac div 01 s 2015</div>
<div id="acd1s2016" class="showcontent">ac div 01 s 2016</div>
<div id="acd1s2017" class="showcontent">ac div 01 s 2017</div>
<!-- dropdown content option 02 -->
<div id="acd2s2014" class="showcontent">ac div 02 s 2014</div>
<div id="acd2s2015" class="showcontent">ac div 02 s 2015</div>
<div id="acd2s2016" class="showcontent">ac div 02 s 2016</div>

这里是fiddle

谢谢。

【问题讨论】:

  • 那么您的具体问题是什么?您所做的只是发布您的需求。听起来您只是希望我们为您编写整个需求的解决方案。顺便说一句,由于您已经在代码 sn-p 中发布了代码,因此无需同时链接到 Fiddle。
  • 我是新手,了解 sn-p 部分。如何在默认情况下隐藏第二个下拉列表中的选项,目前它显示信息而不在第一个下拉列表中选择和选项?
  • 是的,你已经说过了。这就是你想要发生的事情。但是,我们希望您尝试解决方案,然后针对您遇到的编程问题提出具体问题。如果您想知道如何根据对另一个列表的选择来隐藏一个列表中的选项,那么这里不是地方。网上有很多关于这类事情的教程。当您准备好尝试时,请尝试一下,如果您的尝试有问题​​,请返回此处并发布您正在做的事情以及您的具体问题。
  • 是的,先生!注意点。

标签: javascript jquery jquery-selectors html-select dropdown


【解决方案1】:

你可以试试这个:

$(document).ready(function() {
       var allOptions = $('#dseason option');
       allOptions.hide();

       $('#ldivision').change(function() {
        
        $('#dseason option').remove();
        var classN = $('#ldivision option:selected').prop('class');
        var opts = allOptions.filter('.' + classN);

        $.each(opts, function(i, j) {
         $(j).appendTo('#dseason');
        });

        $('#dseason').val($('#dseason option:first').val());
        allOptions.show();

       });

       $(".showcontent").hide();
        //unhides first option content
        $("#acd1s2014").show();
        //listen to dropdown for change
        $("#dseason").change(function() {
         //rehide content on change
         $('.showcontent').hide();
         //unhides current item
         $('#' + $(this).val()).show();
        });
       
      });
/* dropdown selector */
select {
	font-family: verdana;
  margin-bottom: 1em;
  padding: 5px;
	width: 200px;
  border: 0;
  border-bottom: 2px solid green;
  -webkit-transition: border-bottom 2s; /* Safari */
    transition: border-bottom 2s;
}

select:hover {
  border-bottom: 2px solid;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<select id="ldivision" name="divisionselected">
  <!-- selector name -->
  <option value="" class="dselect">Select Category</option>
  <!-- league season dropdown -->
  <option class="div01" value="Division 01">Division 01</option>
  <option class="div02" value="Division 02">Division 02</option>
</select>

<!-- spacing the selectors -->
&nbsp;&nbsp;&nbsp;

<select id="dseason" name="seasonselected">
  <!-- selector name -->
  <option value="" class="sselect">Select Product</option>
  <!-- league season option 01 -->
  <option value="acd1s2014" class="div01">Season 2014</option>
  <option value="acd1s2015" class="div01">Season 2015</option>
  <option value="acd1s2016" class="div01">Season 2016</option>
  <option value="acd1s2017" class="div01">Season 2017</option>
  <!-- league season option 02 -->
  <option value="acd2s2014" class="div02">Season 2014</option>
  <option value="acd2s2015" class="div02">Season 2015</option>
  <option value="acd2s2016" class="div02">Season 2016</option>
</select>

<!-- dropdown content option 01 -->
<div id="acd1s2014" class="showcontent">ac div 01 s 2014</div>
<div id="acd1s2015" class="showcontent">ac div 01 s 2015</div>
<div id="acd1s2016" class="showcontent">ac div 01 s 2016</div>
<div id="acd1s2017" class="showcontent">ac div 01 s 2017</div>
<!-- dropdown content option 02 -->
<div id="acd2s2014" class="showcontent">ac div 02 s 2014</div>
<div id="acd2s2015" class="showcontent">ac div 02 s 2015</div>
<div id="acd2s2016" class="showcontent">ac div 02 s 2016</div>

【讨论】:

  • 请不要回答一开始就不该发的问题,这只会助长更多糟糕的问题。此外,当您发布答案时,它应该解释问题以及它如何解决问题,而不仅仅是“尝试这个”以及代码。你会发现即使是正确解决方案的答案也经常被否决,因为它们没有告知任何人代码的作用。请记住,Stack Overflow 是一个知识库。这不仅仅是回答一个人的问题。这也是关于提供其他人将来会发现的信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多