Checkbox validation formulaire js + bd

Signaler
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
-
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
-
Bonjour

Tout dabord merci à vous tous qui par vos posts ai pu me mettre à la programmation sans m'en faire tout une montagne... breff.
Voilà, j'ai bien cherché pourtant, je n'ai toujours pas trouvé de résolution à mon problème :

Je veux vérifier qu'une parti d'une liste de checkbox dans un form soit bien cochés
la solution aurait été :

puis dans ma fonction je vérifie par exemple que 2 des trois soit bien coché
seulement, y a t il un autre moyent de vérifier étant donné que chaque checkbox porte un nom différent dans mon programme et ce parceque chaque valeur est associété à un champs défini dans la table de ma base de données lorsque je récupère les données du post.

Si vous avez juste un indice
d'avance merci
SDA

8 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,
sûrement à peu près de la même manière qu'en utilisant rp[]
un ch'tit exemple :

<form name= "frm">

</form>
<script type="text/javascript">


/* solution 1, on connait le nombre de checkbox */
for ( var n=1;n<=3;n++ )
{
alert( frm["rp"+n].value );
}
/* solution 2, on ne connait pas le nombre de checkbox */
var chk=frm["rp1"];
n=1;
while (chk)
{
alert( frm["rp"+n].value );
n++
chk=frm["rp"+n];
}


/* solution 3 et 4 = 1 et 2 mais avec id */


for ( var n =1;n<=3;n++ )
{
alert( document.getElementById("rp"+n).value );
}


var chk=document.getElementById("rp1");
n=1;
while (chk)
{
alert( frm["rp"+n].value );
n++
chk=document.getElementById("rp"+n);
}

</script>

il y a certainement d'autres solutions....
mais rp[] c'est très bien ( surtout pour le php ) pourquoi ne pas utiliser ça ?
Cordialement. Bul. ~ Site ~
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
2
Merci pour ta réponse je suis en train de l'étudier

je nutilise pas rp[] parceque mon form est constitué de plusieurs suite de checkbox et/ou radio et que j'associe le nom du champs de la table au nom de l'"inpute type" lorsque je récupère les infos
par exemple
Quest01



Quest02



Quest03



et donc pour chaque question, que ce soit du radio check ou champ je dois vérifier si l'utilisateur à coché 1, 2 ou n réponses.
je suis en asp
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
2
est ce que je peux faire ça par exemple ? :
Quest01



Quest02




puis solution 4 :
<script>
var chk=document.getElementById("rpid1");
n=1;
while (chk)
{
alert( frm["rpid"+n].value );
n++
chk=document.getElementById("rpid"+n);
}
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
2
quelqu'un peut il m'éclairer ou m'aider?
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
>> est ce que je peux faire ça par exemple ? :
as-tu esssayé ?
>>quelqu'un peut il m'éclairer ou m'aider?
qu'est-ce qui ne fonctionne pas ?
Cordialement. Bul. ~ Site ~
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
2
Merci de m'avoir éclairé Bultez :
Voici pour ceux que cela intéresse :

JAVASCRIPT
function check(ma){
var chk=document.getElementById("rpid1");
n=1;
u=0
while (chk){
if ((document.form["rpid"+n].checked) == true){
u=u+1;
if(u > ma){
alert("Pas plus de " + ma + " réponses.");
document.form["rpid"+n].checked=false;
u--;
}
}
n++
chk=document.getElementById("rpid"+n);
}
}
HTML :


SDA
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
2
si je montre mon code vous allez me trouver ridicule, mais bon ca fait plusieurs jours que je suis dessus alors voici :

Je ne peux pas faire autrement pour plus tard que d'avoir des noms différents de checkbox. Je récapitule le but si qq un peux m'aider :

J'ai plusieurs groupes de checkbox dans un formulaire.
Je dois vérifier pour chaque groupe de checkbox (nommés par un id dans un div) que l'utilisateur n'a pas coché trop de cases. La vérif se fait direct lors du clic. tout comme le code dans le précédant message et qui fonctionne mais uniquement pour 1 groupe de checkbox.

Merci vraiment pour votre aide.

<script language="javascript">


function checkrp1(num,nbre_max,nbre,cazy,rptop){
//alert(cazy);
var tmp = document.getElementById(cazy);
var cbs = tmp.getElementsByTagName("INPUT");
var nbre_max;
var nbre;
var num;
var rptop;
for (var i=0; i < cbs.length; i++){
if((document.form["rp"+num].checked)==true){
nbre++;
num++;
if (num>8) (num=5);
alert(num);
} else {
nbre--;
num--;
}
if(nbre > nbre_max){
alert('Pas plus de ' + nbre_max + ' réponses ! ' + 'rp ' + num);
if (num<5) (num=8);
num--;
document.form["rp"+rptop].checked=false;
nbre--;
}
}
}
</script>
<form name="form" method="POST">

1er choix
2eme choix
3eme choix
4eme choix

1er choix
2eme choix
3eme choix
4eme choix

<!-- ... //-->

</form>


SDA
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
2
Je viens de rajouter les commentaires en vert :

<html>
<head>
<title></title>
<script language="javascript">
function checkrp1(num,nbre_max,nbre,cazy,rptop){
//cazy : le nom de l'id div
//nbre_max : le nombre maximum de réponse possible
//nbre : un compteur lambda comme i
//rptop : un ancien essai de variable
//alert(cazy);
var tmp = document.getElementById(cazy);
var cbs = tmp.getElementsByTagName("INPUT");
var nbre_max;
var nbre;
var num;
var rptop;


for (var i=0; i < cbs.length; i++){
//je boucle sur le nombre d'input checkbox dans l'id du div
if((document.form["rp"+num].checked)==true){
//je vérifie que la case est coché, il y a un problème d'association entre num et la boucle..
//j'incrémente num pour qu'il vérifie les autres rp, mais si au départ num=7 et si tant est qu'il y ai 4 input checkbox je me retrouve avec un num à 11 alors qu'il n'existe pas de checkbox nommé rp11, il faut donc revenir à 5, je ne sais pas comment faire (pas assez compétent)
nbre++;
num++;
//alert(num);
} else {
nbre--;
num--;
}
if(nbre > nbre_max){
alert('Pas plus de ' + nbre_max + ' réponses ! ' + 'rp ' + num);
num--;
nbre--;
//je décheck le dernier coché si nbre est supérieur à ce qui est autorisé
document.form["rp"+num].checked=false;


}
}
}
</script> </head>

<form name="form" method="POST">


1er choix
2eme choix
3eme choix
4eme choix





1er choix
2eme choix
3eme choix
4eme choix



</form>

</html>


SDA