我正在尝试使用复选框和组合框来实现一个表单。如果单击chekbox,则组合框将按照单击的复选框的顺序进行更新。
例如,如果我单击所有复选框,则所有组合框都应具有"1","2","3"
等选项。如果我点击第一个和第三个复选框,则两个组合框都应该有选项"1"
和"2"
,因为只有两个复选框被点击。
在这里,我还想根据点击顺序更新所选的选项索引。例如,如果我单击第一个复选框,相应的组合框应该有一个选项"1"
,并且应该选择此选项索引。
直到这一部分,它就像一个魅力。但是,
如果未选中此复选框,则不会保留所选索引,也不会再正确显示所选索引。
我已完成此http://jsbin.com/UjOYuVA/3/edit
因此,当我取消选中复选框或复选框时会出现问题。 如何解决这个问题?
答案 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,我修改了。如果选择的索引不存在,它将选择该选择框的最后一个索引。