2013-02-18 166 views
1

我有一系列的复选框:禁用和启用复选框的Javascript

<tr id="tr5" onmouseover="changeBackgroundColor(this.id)" onmouseout="changeBackgroundColor2(this.id)"> 
<td class="td5"><input name="benefit" value="Bonuses" id="benefit5" type="checkbox" onchange='addition();'</td> 
<td class="td5"><label for="benefit5"> <b>Bonuses</b></label></td> 

<tr id="tr6" onmouseover="changeBackgroundColor(this.id)" onmouseout="changeBackgroundColor2(this.id)"> 
<td class="td6"><input name="benefit" value="Final salary pension" id="benefit6" type="checkbox" onchange='addition();'</td> 
<td class="td6"><label for="benefit6"> <b>Final salary pension</b></label></td> 

一旦用户选择了3个复选框,则可以在一重击禁用其余的(有30个复选框 - 我能做到这一点单独但这似乎是一种痛苦)?是的,人们会怎么做呢?另外,如果用户未选中其中一个复选框,是否可以再次启用它们?

编辑:如果可能 - 有人能指出我在正确的方向,代码明智吗?

由于提前,

H.

+0

是有可能 – mplungjan 2013-02-18 09:54:30

+0

@mplungjan - 的能够指向我任何机会正确的方向代码明智吗? – 2013-02-18 09:55:33

+0

我正在研究它 - 让我们看看我是否做到了;) – mplungjan 2013-02-18 09:56:22

回答

2

DEMO

var chk=0; 
function checkCheckboxes() { 
    var checkboxes = document.getElementsByName("benefit"); 
    for (var i=0;i<checkboxes.length;i++) { 
    chk += checkboxes[i].checked?1:0; // count in case we reload 
    checkboxes[i].onclick=function() { // set up event handler for each 
     chk+=this.checked?1:-1; // add or subtract one 
     if (chk > 3) { 
     console.log(chk,"too many") 
     this.checked=false; 
     chk--; // we counted too many 
     } 
    } 
    } 
} 


function changeBackgroundColor(row,on) { 
    var id = row.id; // if you need that 
    row.style.backgroundColor=(on)?"red":"white"; 
} 
window.onload=function() { 
    var trs = document.getElementById("table1").rows; 
    for (var i=0;i<trs.length;i++) { 
     trs[i].onmouseover=function() { 
     changeBackgroundColor(this,1); 
     } 
     trs[i].onmouseout=function() { 
     changeBackgroundColor(this,0); 
     } 
    } 
    checkCheckboxes(); 
} 

使用

<table id="table1"> 
<tr id="tr1"> 
<td class="td1"><input name="benefit" value="Bonuses" id="benefit1" type="checkbox"</td> 
<td class="td1"><label for="benefit1"> <b>Bonuses</b></label></td> 
</tr> 
    <tr id="tr2"> 
<td class="td2"><input name="benefit" value="Bonuses" id="benefit2" type="checkbox"</td> 
<td class="td2"><label for="benefit2"> <b>Bonuses</b></label></td> 
</tr> 
    <tr id="tr3"> 
<td class="td3"><input name="benefit" value="Bonuses" id="benefit3" type="checkbox"</td> 
<td class="td3"><label for="benefit3"> <b>Bonuses</b></label></td> 
</tr> 
    <tr id="tr4"> 
<td class="td4"><input name="benefit" value="Bonuses" id="benefit4" type="checkbox"</td> 
<td class="td4"><label for="benefit4"> <b>Bonuses</b></label></td> 
</tr> 
     </table> 
+1

这位先生 - 是一个令人兴奋的编码和超级作品! – 2013-02-18 10:24:28