javascript - Jquery中动态选择Drop Down

标签 javascript jquery validation

我有 4 个下拉菜单。

Image

默认情况下,每个drop都有一个--select--选项。每个盒子都有一个唯一的 ID。如您所见,如果上面的下拉列表值为 --select--,则禁用第二个下拉列表。仅当该值不是 --select-- 时才会启用

这是我的代码:

$(document).ready(function() {

$('#idOfTheFirstDropDown').bind('change', function() {
    var options = $(this).children('option');
    var item = $('div.c-select').children().hide(); // hide all the elements
    var value = Math.floor(Math.random() * options.length );
    //console.log(value);
    if (value.length) { // if selected 
        item.show(); // show the next dropdown
    }
}).trigger('change');
});

我希望它仅在我之前的下拉列表值 --select-- 时显示下一个下拉列表。我的代码正在接受第一个下拉列表,但不更改值。我究竟做错了什么?谢谢。

我的一个下拉框的 HTML。其余 3 个仅 ID 发生变化。其余 HTML 保持不变。

<div class="c-select">
<select name="list1" onchange="javascript:setTimeout('__doPostBack(\'list1\',\'\')', 0)" id="idOfTheFirstDropDown" class="GroupDD dropDown ">
<option selected="selected" value="">-- Select --</option>
<option value="1">Group1</option>
</select>
</div>

最佳答案

我不会隐藏选项,而是使用禁用属性(代码中的注释):

var selects = $('.drop-down');
selects.not(':eq(0)').prop('disabled', true); // disable all but first drop down

selects.on('change', function() {
  var select = $(this),
      currentIndex = selects.index(select),
      nextIndex = currentIndex + 1;
  
  // only do this if it is not last select
  if (currentIndex != selects.length - 1) { 
    selects.slice(nextIndex)        // get all selects after current one
           .val('')                 // reset value
           .prop('disabled', true); // disable 
    
    selects.eq(nextIndex).prop('disabled', select.val() === ''); // disable / enable next select based on val
  }
  
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="drop-down">
  <option value="">--Select--</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
</select><br>
<select class="drop-down">
  <option value="">--Select--</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
</select><br>
<select class="drop-down">
  <option value="">--Select--</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
</select><br>
<select class="drop-down">
  <option value="">--Select--</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
</select>

关于javascript - Jquery中动态选择Drop Down,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41744796/

相关文章:

javascript - D3 : Preserve minutes in time scale interval

javascript - `document` 没有定义 Electron

javascript - 动画在向上方向之前执行

java - Grails 嵌套域 - 将所有错误添加到顶级域对象

jquery - 使用 Jquery/CSS 更改负数的文本字段背景颜色

javascript - 在formik中,速记输入字段不起作用

c# - asp.net MVC 4 应用程序中的单独登录

javascript - 当用户高兴并且使用face-api检测到面部时如何拍摄图像

javascript - JSON.stringify 看似缩写值

c# - 如何针对一组可变的值范围进行验证?