即使将其设置为禁用,也选中该复选框

问题描述:

为什么即使将复选框设置为禁用,也会在单击全部检查脚本时始终检查全部。即使将其设置为禁用,也选中该复选框

这里是我的脚本

禁用复选框由PHP代码设置

while ($row = $result1->fetch_assoc()) { 
<td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="' . $row['id'] . '"'.($row['pr'] == ""?"disabled ":"").' class="checkbox"></td> 
} 

而且这里是我的检查脚本中的所有

function setCheckboxes3(act) { 
    var e = document.getElementsByClassName('checkbox'); 
    var elts_cnt = (typeof(e.length) != 'undefined') ? e.length : 0; 
    if (!elts_cnt) { 
    return; 
    } 
    for (var i = 0; i < elts_cnt; i++) { 
    e[i].checked = (act == 1 || act == 0) ? act : (e[i].checked ? 0 : 1); 
    } 
} 

链接

a href="javascript:setCheckboxes3(1);" class="chkmenu">Check All</a> | <a href="javascript:setCheckboxes3(0);" class="chkmenu">Uncheck All</a> 
+0

['document.getElementsByClassName'](http://www.w3.org/ TR/2008/WD-html5-20080610/dom.html#getelementsbyclassname)会返回一个NodeList,因此'typeof e.length'永远不会是'undefined'。 – RobG

+0

为什么包含jQuery标签,当你似乎没有使用jQuery? – RobG

更新的链接,通过true|false

<a href="javascript:setCheckboxes3(true);" class="chkmenu">Check All</a> | <a href="javascript:setCheckboxes3(false);" class="chkmenu">Uncheck All</a> 

然后

function setCheckboxes3(act) { 
    $('.checkbox').not(':disabled').prop('checked', act) 
    //or $('.checkbox:not(:disabled)').prop('checked', act) 
} 

与您当前的链接

function setCheckboxes3(act) { 
    $('.checkbox').not(':disabled').prop('checked', act == 1 ? true : false); 
    //or $('.checkbox:not(:disabled)').prop('checked', act == 1 ? true : false) 
} 
+0

所以我要改变我的脚本? – surname

+0

@papaosurname是的 –

+0

它工作:),我只是添加一些链接与我以前的问题。请看看 – surname

我知道这是混乱的,但它应该完成这项工作:

for (var i = 0; i < elts_cnt; i++) { 
    if(!e[i].disabled){ 
    e[i].checked = (act == 1 || act == 0) ? act : (e[i].checked ? 0 : 1); 
    }else{ 
    e[i].checked = false; 
    } 
    } 

你可以只检查它是否是n OT禁止,像:

e[i].checked = (act == 1 || act == 0)? act : e[i].checked && !e[i].disabled ? false : true; 

选中的属性是布尔值,所以它应该被设置为truefalse