Utilisateur anonyme
-
4 juin 2009 à 11:21
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 2015
-
4 juin 2009 à 15:17
Bonjour,
J'ai un formulaire contenant une centaine de checkbox nomé comme suit :
...
J'ai une petite fonction JS (chkcontrol) qui me permet que l'utilisateur ne puisse cocher que maximum 3 checkbox, et que si il dépasse ce nombre, une alerte s'affiche.
Seulement cette fonction que j'ai trouvé sur le net ne fonctionne normalement que si le name="" de mes checkbox ont exactement le même nom.
Voici la fonction :
function chkcontrol(j) {
var total=0;
for(var i=0; i < document.choixzik.ckb.length; i++){
if(document.choixzik.ckb[i].checked){
total =total +1;}
if(total > 3){
alert("Tu ne peux séléctionner que 3 checkbox !")
document.choixzik.ckb[j].checked = false ;
return false;
}
}
}
Ma question est donc : comment adapter cette fonction pour qu'elle fonctionne avec des checkbox de noms différents (comme montré ci-dessus) ?
D'avance merci pour vos pistes :-)
Bonne journée,
Fabien
A voir également:
"Server api" "build date" "php version 4.4.5" "php variables"
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201515 4 juin 2009 à 11:42
bonjour,
>>ne fonctionne normalement que si le name="" de mes
>>checkbox ont exactement le même nom.
ben oui... c'est bien plus simple à gérer
y compris coté serveur !
mais enfin, si tu tiens à tout prix à
te compliquer la vie :
var n=1;
while ( document.name_du_formulaire["ckb"+n] )
{ traitement de document.name_du_formulaire["ckb"+n]
n++
}
@+
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201515 4 juin 2009 à 12:17
bah... j'ai pourtant dit, non ?
... traitement de document.name_du_formulaire["ckb"+n] ...
fonction chkcontrol()
{ var n=1;
var total=0;
while ( document.choixzik["ckb"+n] )
{ if ( document.choixzik["ckb"+n].checked )
{ total++;
if ( total > 5 )
{ alert("5 checkbox max !");
return false;
}
}
n++;
}
return true;
}
ok je vois,
ca marche impec.
j'ai juste rajouter document.choixzik["ckb"+n].checked = false; car le return false; ne suffit pas à décocher celui qui est en trop.
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201515 4 juin 2009 à 12:33
>>ne suffit pas à décocher celui qui est en trop.
certes... mais
_ comme tu sors de la fonction,
si tu en coches 25, il en restera 19 cochés en trop ;o)
_ tu ne décoche peut-être pas celui qu'il faut
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201515 4 juin 2009 à 12:41
à priori, je dirais : tu ne peux pas !
comment veux-tu deviner "l'erreur" de l'internaute ?
il peut avoir coché n'importe lesquels en trop.
et comme déjà dis, ça ne pourrait "marchouiller"
que pour 6 checkbox cochés. et pour 25 ?
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201515 4 juin 2009 à 12:43
ou alors, il faut contrôler à
chaque click sur un checkbox quelconque.
remarque que c'est peut-être ce que tu fais ?
donc dans ce cas décocher le dernier ? celui cliqué ?
oui c'était mon but au départ, pour ca que j'avais mis pour chaques checkbox un onclick="mafonction(ckb1); pour décocher le dernier cliquer si on dépasse le nombre total, mais la je vois pas comment gérer ce système
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201515 4 juin 2009 à 15:17
tu as compris que c'était de l'humour
j'aurais du mettre les balises <humour></humour>... oubli impardonnable.
néanmoins ( ou handicapé nasal ) j'eusse utilisé this, na !
mais chacun ses goûts, ça ne fait pas le moine.