En tanto i crezca siempre será el último. Y el limite debería ser > que no == que
De todas maneras hacer esto es más flexible
Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script type="text/javascript"> //<![CDATA[
function limitar(grupo,limite){
var grupo=document.getElementsByName(grupo);
var limite=limite
for (var i=0; i < grupo.length; i++){
grupo[i].onchange=function(){
var tildados=0
for (var i=0; i < grupo.length; i++)
tildados+=(grupo[i].checked)? 1 : 0
if (tildados > limite){
alert("solo se permiten "+limite+" selecciones")
this.checked=false
}
}
}
}
//]]>
<input type="checkbox" name="PREGUNTA9[]" onchange="limitar(this.name,3);" /> a
<br /> <input type="checkbox" name="PREGUNTA9[]" onchange="limitar(this.name,3);" /> b
<br /> <input type="checkbox" name="PREGUNTA9[]" onchange="limitar(this.name,3);" /> c
<br /> <input type="checkbox" name="PREGUNTA9[]" onchange="limitar(this.name,3);" /> d
<br /> <input type="checkbox" name="PREGUNTA9[]" onchange="limitar(this.name,3);" /> e
<br />
<input type="checkbox" name="PREGUNTA10[]" onchange="limitar(this.name,2);" /> f
<br /> <input type="checkbox" name="PREGUNTA10[]" onchange="limitar(this.name,2);" /> g
<br /> <input type="checkbox" name="PREGUNTA10[]" onchange="limitar(this.name,2);" /> h
<br /> <input type="checkbox" name="PREGUNTA10[]" onchange="limitar(this.name,2);" /> i
<br /> <input type="checkbox" name="PREGUNTA10[]" onchange="limitar(this.name,2);" /> j
<br />
Podés cambiar el límite para cada grupo a tu gusto cambiando el parámetro
onchange="limitar(this.name,2);"
onchange="limitar(this.name,4);"
onchange="limitar(this.name,3);"
etc.
Saludos