Vous pouvez le faire en modifiant la méthode setChecks
comme suit:
function setChecks(obj) {
if(obj.checked) {
checkCount = checkCount + 1;
//note: modify this selector to specify the actual table in question,
//of course. If this is not known beforehand (ie there are multiple
//tables of checkboxes), you can use
// $(this).closest('table').find('input:checkbox:not(:checked)')
//instead.
if(checkCount == 8)
$('table input:checkbox:not(:checked)').attr('disabled', 'disabled');
} else {
if(checkCount == 8)
$('table input:checkbox:not(:checked)').removeAttr('disabled');
checkCount = checkCount - 1;
}
}
Rien à voir avec la question à portée de main, mais nous espérons utile: Je sais que c'est un exemple jsFiddle et donc probablement pas une indication de votre code réel , mais vous devez envisager d'utiliser une mise en forme cohérente, en particulier en ce qui concerne l'indentation (et dans une moindre mesure l'espacement). En outre, il est bon de toujours utiliser des points-virgules lors de l'écriture de javascript, même s'ils sont parfois optionnels. Le code lisible est beaucoup plus facile à déboguer, étendre, et certainement plus facile à comprendre pour les autres. Une autre chose que vous pouvez faire pour simplifier votre code est d'utiliser des feuilles de style au lieu de spécifier la largeur et l'alignement dans chaque élément td
et d'utiliser un javascript discret au lieu de l'événement onclick
dans chaque case à cocher. Ceux-ci peuvent être tous remplacés par une simple déclaration de liaison jQuery dans votre événement document.ready
:
$('table input:checkbox').click(setChecks);
Cela nécessiterait la modification setChecks
recevoir un paramètre d'événement à la place. (Edit) comme ceci:
function setChecks() {
if(this.checked) {
...
} else { ... }
}
Vous n'avez pas besoin en fait le paramètre d'événement parce this
fait référence à la cible de l'événement en cours, de sorte que vous pouvez simplement supprimer ce paramètre tout à fait.
Puis-je savoir quel est votre objectif sur vos codes? Parce que je pense juste, vous faites une overkill sur les codes. Je veux dire que cela aurait pu être fait plus simple IMO. – Reigel
Si vous pensez que cela peut être plus simple, je serais ravi de le simplifier. J'allais attendre que tout fonctionne et essayer de le simplifier par la suite. Si vous voyez quelque chose qui peut être raccourci s'il vous plaît conseiller. Le but du code est de permettre à quelqu'un de passer à une certaine page Web si le savoir comment cliquer sur les cases à cocher dans la bonne combinaison. – James
bien, [voici un raccourci codes] (http://jsfiddle.net/XQy9G/), regardez-le et n'hésitez pas à me demander. – Reigel