如何根据第一个选项选择更改第二个下拉列表和基于第二个选项选择的第三个下拉列表

欧普

请有人帮助我 - 我希望第二个下拉列表根据第一个选项的选择进行更改,并且第三个下拉列表根据第二个选择的选项进行更改。这是我的 html:

<select name="selectLevel" id="selectLevel" >
     <option value="">-- select a level --</option>
     <option value="jhs">Junior High School</option>
     <option value="shs">Senior High School</option>
     <option value="tertiary 3">Tertiary</option>
</select>

<select name="selectSubject" id="selectSubject">
    <option value=""> -- select a subject -- </option>
    <option data-value="jhs" value="english">English Language</option>
    <option data-value="shs" value="maths">Mathematics</option>
    <option data-value="tertiary" value="IT">Business Math</option> 
</select>

<select name="selectTopic" id="selectTopic" >
    <option value=""> -- select a topic -- </option>
    <option data-value="jhs">Spelling</option>
    <option data-value="shs">Matrix</option>
    <option data-value="tertiary">Calculus</option>        
</select>

And here is my script:

 $(document).ready(function(){
   $('#jhs').change(function(){
     if($(this).data('options') == undefined){
     $(this).data('options', $('#selectSubject option').clone());
 }
 var id = $(this).val();
 var options = $(this).data('options').filter('[data-value=' + id + ']');
 $('#selectSubject').html(options).show();
});

$('#selectSubject').change(function(){
  if($(this).data('options') == undefined){
    $(this).data('options', $('#selectTopic option').clone());
 }
 var id = $(this).val();
 var options = $(this).data('options').filter('[data-value=' + id + ']');
 $('#selectTopic').html(options).show();
});
});

非常感谢!

光之记忆

我稍微改变一下以使其更容易。

当我们更改第一个选择时,它会检查第二个选择的选项并更改其值。

之后,它会触发第二个选择的更改事件等等。

$(document).ready(function() {

  // Save all selects' id in an array 
  // to determine which select's option and value would be changed
  // after you select an option in another select.
  var selectors = ['selectLevel', 'selectSubject', 'selectTopic']

  $('select').on('change', function() {
    var index = selectors.indexOf(this.id)
    var value = this.value

    // check if is the last one or not
    if (index < selectors.length - 1) {
      var next = $('#' + selectors[index + 1])

      // Show all the options in next select
      $(next).find('option').show()
      if (value != "") {
        // if this select's value is not empty
        // hide some of the options 
        $(next).find('option[data-value!=' + value + ']').hide()
      }
      
      // set next select's value to be the first option's value 
      // and trigger change()
      $(next).val($(next).find("option:first").val()).change()
    }
  })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selectLevel" id="selectLevel">
     <option value="">-- select a level --</option>
     <option value="jhs">Junior High School</option>
     <option value="shs">Senior High School</option>
     <option value="tertiary">Tertiary</option>
</select>

<select name="selectSubject" id="selectSubject">
    <option value=""> -- select a subject -- </option>
    <option data-value="jhs" value="english">English Language</option>
    <option data-value="shs" value="calculus">Calculus</option>
    <option data-value="tertiary" value="IT">Info Tech</option> 
</select>

<select name="selectTopic" id="selectTopic">
    <option value=""> -- select a topic -- </option>
    <option data-value="calculus">Calculus</option>
    <option data-value="calculus">Matrix</option>
    <option data-value="english">Basic English</option>
    <option data-value="english">Basic English 2</option>
    <option data-value="IT">Info Tech Studies</option>
    <option data-value="IT">Info Tech Studies 2</option>       
</select>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用ajax和jQuery根据烧瓶中第一个下拉列表中选择的值填充第二个下拉列表

根据第一个下拉选择jQuery显示第二个下拉选项

使用角度4根据第一个下拉菜单选择更改第二个下拉菜单选项

Javascript:如果第一个下拉列表的值大于第二个下拉列表的值,如何从第二个下拉列表中删除选项,反之亦然?

根据第一个选择设置第二个选择的选项

如何使第二个下拉列表基于第一个下拉值自动选择值

如果我不更改第一个下拉列表,则第二个下拉列表的值不变

如何根据上一个下拉值的选择启用/禁用第二个下拉列表值

目标c如何根据选择第一个文本字段项目删除第二个和第三个文本字段中的项目

jQuery根据第一个下拉列表显示/排序第二个下拉列表?

如何使用CSS类在第一个,第二个或第三个html元素中选择子元素?

根据第一个下拉选项更改第二个下拉选项(仅JavaScript)

使用jQuery根据第一个选择列表选项显示第二个字段

根据第一个多选下拉列表更新第二个多选下拉列表

显示基于第一个下拉列表的第二个下拉列表不起作用

根据Rails中的第一个选择列表值更改第二个选择列表

根据第一个下拉菜单禁用第二个下拉菜单选项

如何基于第一个下拉列表选择获取动态生成的两个下拉列表的第二个下拉列表的ID?

根据选择的第一个选择器的哪一行来更改第二个和第三个选择器视图

选择第一个选项时自动更改第二个下拉菜单

根据React.Js中第一个下拉列表的选择填充第二个下拉列表

AngularJS:根据第一个选择下拉列表的选择填充第二个选择下拉列表

第一个下拉选择不过滤第二个下拉

根据第二个列表框选择生成第三个列表框的选项

我在第一个下拉列表中保留了选择选项值,但没有保留第二个或第三个

根据第一个下拉列表中的选择显示第二个下拉列表?

如何根据第一个选择选项显示第二个选择选项

根据第一个下拉列表中的选定选项,使第二个下拉列表中的特定选项消失

如果我更改第一个下拉值,如何重置第二个下拉列表?