2013-11-21 64 views
1

爲什麼即使將複選框設置爲禁用,也會在單擊全部檢查腳本時始終檢查全部。即使將其設置爲禁用,也選中該複選框

這裏是我的腳本

禁用複選框由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

回答

0

更新的鏈接,通過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

0

我知道這是混亂的,但它應該完成這項工作:

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; 
    } 
    } 
0

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

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

選中的屬性是布爾值,所以它應該被設置爲truefalse

相關問題