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

时间:2015-02-10 12:39:20

标签: javascript php html

帮助!我使用此代码获得2个下拉列表,以便第二个根据第一个选择填充子类别。

Populate another select dropdown from database based on dropdown selection

它适用于单个选择下拉列表,但我需要能够从第一个下拉列表中选择多个项目,并让它显示属于所有选定项目的子类别。

目前,当在第一个下拉列表中选择了其他项目时,第二个更新仅显示最新所选项目的子类别,可能是因为它正在执行“新选项”。有点功能。如果在第一个项目中选择了其他项目,如何将项目附加到第二个下拉列表?非常感谢。

[编辑]令人沮丧的是,我无法让它在jsfiddle上工作,但我会链接代码,希望它仍然有意义。不确定它是否包含

 php?

: - http://jsfiddle.net/m1ugpb4o/5/

2 个答案:

答案 0 :(得分:0)

使用jQuery Change - http://api.jquery.com/change/

并在事件处理程序中有你的ajax请求来填充第二个多选

编辑: 评论与代码和生病更新如何做到这一点。 (使用jsfiddle)

答案 1 :(得分:0)

从原始代码链接(Populate another select dropdown from database based on dropdown selection

不得不改变这一点: -

  function updateSubCats(){
    var catSelect = this;
    var catid = this.value;


    var subcatSelect = document.getElementById("subcatsSelect");
    subcatSelect.options.length = 0; //delete all options if any present
    for(var i = 0; i < subcats[catid].length; i++){
      subcatSelect.options[i] = new Option(subcats[catid][i].val,subcats[catid][i].id);
    }

到此: -

  function updateSubCats(){
    var catSelect = this;
    var catid = this.value;
    var testSelectionArray = new Array();

for(var j = 0; j < this.options.length; j++) {
      if (this.options[j].selected) {
           testSelectionArray.push(this.options[j].value); 
       }
}

    var subcatSelect = document.getElementById("subcatsSelect");
    subcatSelect.options.length = 0; //delete all options if any present
    var k=0;
    for(var i = 0; i < testSelectionArray.length; i++){
      catid = testSelectionArray[i];
        for(var j = 0; j < subcats[catid].length; j++){
            subcatSelect.options[k++] = new Option(subcats[catid][j].val,subcats[catid][j].id);
        }        
    }
  }