javascript - 当父选择框更改时,如何删除 Jquery 中的旧选项?

标签 javascript jquery

我有 3 个使用 jquery 和 json 的链接选择框。

根据前两个值,我过滤第三个值,我的代码实际上有效,但问题是当我更改前两个选择框的值时,第三个选择会收到新数据,同时保留旧数据。

我尝试清空数组,但没有成功。

$(document).ready(function() {
  var json = JSON.parse(jsonString);
  var makesArray = [];
  var selectedyear;
  var selectedcourse;

  var $yearDropDown = $("#DropDown_Year");
  var $course_type = $("#course_type");
  $yearDropDown.change(function() {
     selectedyear = this.value;
    //filter based on  selected year.  
});
        $course_type.change(function(){

   selectedcourse = this.value;
    makesArray = jQuery.grep(json, function(course, i) {
      return course.course_type == selectedcourse && course.year_code == selectedyear;
    })  
    var selectBox = document.getElementById('DropDown_Make');
for(var i = 0, l = makesArray.length; i < l; i++){
  var option = makesArray[i];
  selectBox.options.add( new Option(option.course_code, option.course_code, option.course_code) );
}
makesArray= []; //makesArray.empty(); 
});

});


<div id="DrpDwn">
  Year:
  <select id="DropDown_Year">
    <option>Yıl</option>
        <option value="15">2015-2016</option>
            <option value="16">2016-2017</option>
  </select>
  <select class="form-control" id="course_type" name="course_type" required>
    <option value="" selected> Choose</option>
    <option value="Yos">YÖS</option>
    <option value="SatMatGeo">SAT (MAT)</option>
    <option value="SatCriRea">SAT (ENG)</option>
    <option value="TomerABC">TÖMER (ABC)</option>
    <option value="TomerAB">TÖMER (AB)</option>
    <option value="TomerBC">TÖMER (BC)</option>
    <option value="TomerA1A2">TÖMER (A)</option>
    <option value="TomerB1B2">TÖMER (B)</option>
    <option value="TomerC1C2">TÖMER (C)</option>
  </select>
  Make:
  <select id="DropDown_Make">
    <option>None</option>
  </select>
</div>

这是JSFIDDLE

https://jsfiddle.net/rw7cb8c5/25/

最佳答案

使用 $course_type.change() 中的 selectBox.innerHTML = ""DropDown_Make 清空,如下所示。

$course_type.change(function () {
    selectedcourse = this.value;
    makesArray = jQuery.grep(json, function (course, i) {
        return course.course_type == selectedcourse && course.year_code == selectedyear;
    })
    var selectBox = document.getElementById('DropDown_Make');

    selectBox.innerHTML = ""; //added this line

    for (var i = 0, l = makesArray.length; i < l; i++) {
        var option = makesArray[i];
        selectBox.options.add(new Option(option.course_code, option.course_code, option.course_code));
    }
    makesArray.empty();
});

UPDATED FIDDLE

关于javascript - 当父选择框更改时,如何删除 Jquery 中的旧选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35686289/

相关文章:

javascript - 从多个选择框获取多个数据'

c# - ASP.NET 表单字段不从 colorbox 发布

javascript - 通过 jQuery 使某些问题出现在 html 表单上?

javascript - 通过 Javascript 从 CSS 文件中获取特定的 CSS 属性

javascript - 一页错误中有多个java脚本

javascript - JWPlayer 时间搜索区域和重置变量

javascript - 动态更改 bootstrap-inputmask.js 上的掩码

jQuery DataTables 过滤多个表

javascript - 跨域 JSON - 哪个服务器提供源有关系吗?

javascript - 直到悬停才触发 slider 上的自定义自动旋转?