如何在循环时忽略禁用的复选框值

时间:2014-07-20 08:37:25

标签: javascript html

下面是我的代码:

Cell.setAttribute('type', 'checkbox');
Cell.setAttribute('name', "Size");

根据条件我会设置一些值来检查'并且'禁用'。

Cell.setAttribute('checked', 'true');
Cell.setAttribute('disabled', 'true');   

此处'尺寸'包含一些禁用的值,未经检查和检查。

因此,每当我尝试检索已检查的值时,默认为禁用 复选框也正在退回。

我只想要检查值;不是SelectedDetails方法中禁用的已检查值:

var testCaseArray =[]; 
var checkbox = document.getElementsByName('Size');

for(var i=0; i<checkbox.length; i++){
    if(checkbox[i].checked){ 
        testCaseArray.push(checkbox[i].value);
    }
}

return testCaseArray;

3 个答案:

答案 0 :(得分:1)

将系列中已检查的所有复选框元素(已禁用的复选框除外)检索到Array

var chkd = [].slice.call(document.querySelectorAll('input:checked'))
            .filter(function(e) {
               return null == e.getAttribute('disabled');
             });

您还可以使用此选择器检索具有相同选择的类似数组的列表:

document.querySelectorAll('input:checked:not(disabled)')

jsFiddle

答案 1 :(得分:0)

您需要添加禁用检查,以及检查其是否正在检查

var testCaseArray =[]; 
var checkbox = document.getElementsByName('Size');

for(var i=0; i<checkbox.length; i++){
    if(checkbox[i].disabled){
        continue;
    }
    if(checkbox[i].checked){ 
        testCaseArray.push(checkbox[i].value);
    }
}

return testCaseArray;

答案 2 :(得分:0)

JavaScript has short-circuit evaluation开始,只需将条件添加到if语句中:

var testCaseArray = [],
    checkbox = document.getElementsByName('Size');

for (var i = 0; i < checkbox.length; ++i) {
    if (!checkbox[i].disabled && checkbox[i].checked) {
        testCaseArray.push(checkbox[i].value);
    }
}

return testCaseArray;

如果!checkbox[i].disabled返回false,JavaScript引擎将自动停止评估。