0

我想实现一个表单,该表单具有用于选择选项的复选框和用于对选择进行排序的组合框。我已经这样做了,http://jsbin.com/AmeWahI/1/ 它一直有效,直到我单击第三个复选框。所以,我想要的是当我单击一个复选框时,我想在当前选定的那些中排序这个选择。例如,如果我单击所有复选框,则所有组合框都应显示 1、2、3 以进行排序。如果我单击第一个和第三个复选框,则两个组合框都应显示 1 和 2,因为仅单击了两个元素。

4

4 回答 4

1

我修改了,看这里

http://jsbin.com/AmeWahI/8/

你需要用这个替换你的第二个 for 循环

for (var n=0; n<3; n++) {
      var select = document.getElementById("slct"+n);
            var length = select.options.length;
            select.remove(0);
            for (var m = 0; m < length; m++) {
                select.options[m] = null;
            }
      }
于 2013-09-05T06:54:16.530 回答
0

您可以获得在表单中选中的复选框的数量,并在此基础上设置选择选项的值。

假设我检查了两个复选框 1 和 3..我的学习顺序是两个,您可以将选择框选项的值设置为两个..

于 2013-09-05T06:46:02.893 回答
0

好吧,当任何复选框被选中或未选中时,找到所有选中的复选框计数,清除所有下拉项目列表并将项目添加到下拉列表中,从 1 到选中的复选框总数仅在选中相应的复选框时。

希望对你有帮助...

于 2013-09-05T06:57:21.437 回答
0

试试这个,

function enableDisable(bEnable, checkboxID) {

            var id = checkboxID.replace("checkbox", "");
            var checkedItems = new Array();
            var inputElems = document.getElementsByTagName("input");
            count = 0;
            for (var i = 0; i < inputElems.length; i++) {
                if (inputElems[i].type === "checkbox" && inputElems[i].checked === true) {
                    count++;
                    checkedItems.push(inputElems[i].id);
                }

            }

            for (var k = 0; k < checkedItems.length; k++) {

                var idk = checkedItems[k].replace("checkbox", "");
                var select = document.getElementById("slct" + idk);
                var length = select.options.length;

                for (i = 0; i < length; i++) {
                    select.options[i] = null;
                }
            }


            for (var j = 0; j < checkedItems.length; j++) {

                for (var k = 0; k < checkedItems.length; k++) {
                    var id = checkedItems[j].replace("checkbox", "");
                    var combo = document.getElementById("slct" + id);
                    var option = document.createElement("option");
                    combo.remove(0);
                    option.text = "" + (k + 1);
                    option.value = "" + (k + 1);

                    try {
                        combo.add(option, null); //Standard
                    } catch (error) {
                        combo.add(option); // IE only
                    }
                }
            }
        } 

让我知道是否有任何问题

于 2013-09-05T08:19:43.813 回答