0

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

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

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

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

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

我已经完成了这个http://jsbin.com/UjOYuVA/3/edit

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

4

2 回答 2

0

创建一个数组并使用if not already in thereselected添加new选择(像这样然后当未选中时像这样并循环剩余选项,使用pushif(selected.indexOf(new) < 0)selected.push(new);spliceselected.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 >";
        }
    }
}

当他们更改选择时,您还可以更改数组中值的索引,与此代码一起使用,他们将通过复选框更改来保持选择。再次查看 jquery,这只是一个 javascript 尝试。

于 2013-09-09T20:25:57.193 回答
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; 
          }
        }

      }

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

于 2013-09-10T04:43:39.463 回答