2017-07-08 60 views
0

場景:禁用最後複選框選擇題要求

我有一個投票頁面,則必須從列表中選擇3 4的候選人。

需求:

我需要做最後的複選框禁用檢查他們的後3(4)。

代碼:

HTML

<input class="cb" type="checkbox" name="condidate" value="1" onchange="cbChange(this)" /> 
<input class="cb" type="checkbox" name="condidate" value="2" onchange="cbChange(this)"/> 
<input class="cb" type="checkbox" name="condidate" value="3" onchange="cbChange(this)"/> 
<input class="cb" type="checkbox" name="condidate" value="4" onchange="cbChange(this)"/> 

JS

function cbChange(obj) { 
    var cbs = document.getElementsByClassName("cb"); 
    for (var i = 0; i < cbs.length - 3; i++) { 
     cbs[i].disabled = true; 
    } 
    obj.disabled = false; 
} 

問:

我怎麼能做出選擇後禁用最後的選擇另外3人。

回答

1

您需要在複選框的單擊事件中調用cbChange。


 
function cbChange(obj) { 
 
    var cbs = document.getElementsByClassName("cb"); 
 
    var checkCount = 0; 
 
    for (var i = 0; i < cbs.length; i++) { 
 
     if (cbs[i].checked === true) 
 
\t \t checkCount++; 
 
     cbs[i].disabled = false; 
 
    } 
 
    if (checkCount >= 3){ 
 
\t  for (var i = 0; i < cbs.length; i++) { 
 
\t \t if (cbs[i].checked === false) 
 
\t \t \t cbs[i].disabled = true; 
 
\t  } 
 
    } 
 
}
<input class="cb" type="checkbox" name="condidate" value="1" onclick="cbChange(this)"/> 
 
    <input class="cb" type="checkbox" name="condidate" value="2" onclick="cbChange(this)"/> 
 
    <input class="cb" type="checkbox" name="condidate" value="3" onclick="cbChange(this)"/> 
 
    <input class="cb" type="checkbox" name="condidate" value="4" onclick="cbChange(this)"/> 
 

 

 

+0

如果'checkCount> 3',則不會有任何* *禁用。 –

+0

如果我在選中3後取消選中某個框,則第4個將保持禁用狀態。 –

+0

@ScottHunter感謝您的指點,修正了這一點。 – Dij

1

當複選框中的一個發生了變化,算上那些未選中的號碼。如果只有一個,你可以禁用它;否則,如果一個被禁用,它必須重新啓用。