根据单击复选框的顺序更新组合框的选定索引

时间:2013-09-09 03:01:10

标签: javascript

我正在尝试使用复选框和组合框来实现一个表单。如果单击chekbox,则组合框将按照单击的复选框的顺序进行更新。

例如,如果我单击所有复选框,则所有组合框都应具有"1","2","3"等选项。如果我点击第一个和第三个复选框,则两个组合框都应该有选项"1""2",因为只有两个复选框被点击。

在这里,我还想根据点击顺序更新所选的选项索引。例如,如果我单击第一个复选框,相应的组合框应该有一个选项"1",并且应该选择此选项索引。

直到这一部分,它就像一个魅力。但是,

如果未选中此复选框,则不会保留所选索引,也不会再正确显示所选索引。

我已完成此http://jsbin.com/UjOYuVA/3/edit

因此,当我取消选中复选框或复选框时会出现问题。 如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

创建一个数组selected,然后使用new添加push选项(如果尚未添加if(selected.indexOf(new) < 0)selected.push(new);那么splice然后selected.splice(selected.indexOf(unchecked),1)取消选中,如此indexOf + 1 var selected = []; function enableDisable(checked, id){//checked = this.checked id = this.id if(!checked){ selected.push(id); //write drop-down } else { selected.splice(selected.indexOf(id),1); for(var i in selected) { slctEleme = document.getElementById("slct" + selected[i].substr(selected[i].length - 1),0); slctElem.innerHTML = ""; for (var j in selected) slctElem.innerHTML += "<option value = '"+(j+1)+"'" if ( i = j ) slctElem.innerHTML += "selected"; slctElem.innerHTML += ">" +(j+1)+ "</option >"; } } } 1}}并使用{{1}}

循环其余选项

所以用英语和你的代码(我用你的名字,所以它只适合你)

{{1}}

你也可以change the index of a value in the array当他们改变他们的选择时,与这段代码一起使用,他们将通过复选框更改来保持他们的选择。再看看jquery,这只是一个javascript尝试。

答案 1 :(得分:0)

正如我之前在你的第一个for循环中所说的那样,你需要将所选的值保存为

/*Saving values*/  
              selectValues[i]=document.getElementById("slct"+id_check).selectedIndex; 

在你的最后一个for循环中将它们恢复为:

/*Restoring values*/
      for (var j=0; j<inputElems.length; j++) {

        var select2 = document.getElementById("slct"+j);
        if(selectValues[j]!=-1){
          if(selectValues[j]<select2.options.length){
           select2.selectedIndex=selectValues[j];
          }
          else{
           select2.selectedIndex=select2.options.length-1; 
          }

        }else{
          if(j<select2.options.length){
           select2.selectedIndex=j;
          }
          else{
           select2.selectedIndex=select2.options.length-1; 
          }
        }

      }

检查here,我修改了。如果选择的索引不存在,它将选择该选择框的最后一个索引。