Bouton radio à cocher

Résolu/Fermé
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 - 15 juil. 2008 à 17:34
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 - 16 juil. 2008 à 14:41
Bonjour,

J'ai un problème avec un script qui ne veut pas détecter si un bouton radio est coché ou non
et s'il est coché avec une valeur à "0", vérifier un deuxième champs

Mon formulaire :

<form method="post" name="satisfaction" action="/wkfl.php4" onsubmit="return beforesubmit();">

<input type="radio" name="avis" value="1">&nbsp;Oui
<input type="radio" name="avis" value="0">&nbsp;Non


Pour quelle(s) raison(s) : <input type="text" name="pourquoi" size="70"></input>


Mon script :

<script language="javascript">
<!--
function beforesubmit() {
	errormsg = ""; 
	error_nb = 0;


		if (document.satisfaction.avis.checked=="false") {
		errormsg =errormsg +"\nMerci de bien vouloir préciser votre avis;
		error_nb ++;
		} 



		if (document.satisfaction.avis.value=="0")  {

			if (document.satisfaction.pourquoi.value=="") {

				errormsg =errormsg +"\nMerci de bien vouloir préciser la raison;
				error_nb ++;
			}
		}



	if (error_nb > 0) {
		alert(errormsg);
		return false;
	}
}

//-->
</SCRIPT>


Merci par avance de votre aide

3 réponses

PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
15 juil. 2008 à 21:23
Autant pour moi je me suis focalisé sur le "false"

Voici un ex qui je l'espère te permettra de comprendre comment accèder et manipuler les groupes de boutons radio (un groupe est défini comme un ensemble de boutons radio portant le même nom)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt­d"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Bouton radio & JavaScrip</title> 
<script type="text/javascript" language="Javascript" > 
<!-- 
function boutonradio_info(nom) 
{ 
	// On récupère tous les éléments portant le nom : nom
	var boutons = document.getElementsByName(nom);
	var txt = "";
	for(var i=0; i < boutons.length; i++)
	{
		txt += nom+"["+i+"].value="+boutons[i].value+"\n";
		txt += nom+"["+i+"].checked="+boutons[i].checked+"\n";
	}
	alert(txt);
}

function boutonradio_selectionner(nom,index) 
{ 
	// On récupère tous les éléments portant le nom : nom
	var boutons = document.getElementsByName(nom);
	if ((index >=0) && (index < boutons.length))
	{
		boutons[index].checked=true;
	}
}


// Retourne la valeur du bouton radio sélectionné
function boutonradio_valeur(nom) 
{ 
	retour = ""; 
	// On récupère tous les éléments portant le nom : nom
	var boutons = document.getElementsByName(nom);
	for(var i=0; i < boutons.length; i++)
	{
		if (boutons[i].checked)
		{
			retour = boutons[i].value;
			break;
		}
	}
	return retour;
}
 
// Retourne l'index du bouton radio sélectionné
function boutonradio_index(nom) 
{ 
	retour = -1; 
	// On récupère tous les éléments portant le nom : nom
	var boutons = document.getElementsByName(nom);
	for(var i=0; i < boutons.length; i++)
	{
		if (boutons[i].checked)
		{
			retour = i;
			break;
		}
	}
	return retour;
}
//--> 
</script> 


</head>
<body>
<form>
[0] <input type="radio" name="avis" value="10">&nbsp;Oui (valeur="10")<br />
[1] <input type="radio" name="avis" value="20">&nbsp;Non (valeur="20")<br />
[2] <input type="radio" name="avis" value="30">&nbsp;Peut-être (valeur="30")<br />
<input type="button" onclick="boutonradio_info('avis')" value="infos"><br />
<input type="button" onclick="boutonradio_selectionner('avis',1)" value="selection le second élément (index = 1)"><br />
<input type="button" onclick="alert(boutonradio_index('avis'))" value="index de l'élément sélectionné"><br />
<input type="button" onclick="alert(boutonradio_valeur('avis'))" value="valeur de l'élément sélectionné">
</form>
</body>


PhP  
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
4
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5
16 juil. 2008 à 13:42
Merci de ta réponse PhP,

J'ai fait un copier/coller de ta page dans un fichier texte, je l'ai renommé en test.html et je l'ai lancé malheureusement, je ne peux pas voir le résultat puisque mon navigateur (IE 6) me dit qu'il y a des erreurs dans la page. Je ne peux donc pas voir à quoi cela correspond.

Néanmoins, j'ai peur que cela ne réponde pas exactement à mes besoins.

La solution serait peut-être pour moi de faire la vérification via PhP plutôt qu'avec javascript. Cela sera un peu plus long qu'avec un script côté client mais cela me permettra d'identifier clairement les champs manquant.

A moins que tu penses à autre chose ?
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
15 juil. 2008 à 17:43
Bsr

presque ... lol

Il ne faut pas écrire

document.satisfaction.avis.checked=="false"


mais (sans les guillemets autour du mot false)

document.satisfaction.avis.checked== false



0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5
15 juil. 2008 à 19:01
Merci de ta réponse,

J'avais déjà essayé et cela n'avais rien changé. Je viens tout de même de le corriger et idem.

Je n'arrive pas à comprendre :
1) pourquoi il ne détecte pas que le bouton radio est coché
2) pourquoi, lorsqu'il est coché à non, il ne gére pas la 2eme condition.

Alors que si j'enlève la condition

if (document.satisfaction.avis.value=="0") {


il détecte bien que le deuxième champs est vide.

J'ai cherché un peu partout et je ne vois pas.

Merci pour votre aide
0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5 > JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018
15 juil. 2008 à 19:31
Bonsoir,

Je viens de trouver ce qui cloche en fait. Il s'agit du fait que mon bouton radio porte le même nom.

A priori, même si cela correspond au même champs, il faut lui donner des noms différents et les déclarer dans le javascript.

En mettant

Etes-vous satisfait de la réponse apportée à votre demande<br>
<input type="radio" name="avis1" value="1"> Oui
<input type="radio" name="avis0" value="0"> Non


et dans le script :
if ((document.satisfaction.avis1.checked== false) 
&& (document.satisfaction.avis0.checked== false)) {


Ce n'est pas logique, on devrait pouvoir avoir plusieurs valeurs possibles pour un même bouton et choisir la valeur que l'on veux cocher. Néanmoins, pour les vérifications en javascript (coché ou non coché) cela ne marche pas.

@ + et merci
0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5 > JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018
15 juil. 2008 à 19:42
Ce n'est pas une solution viable car si l'on fait comme cela,
les 2 boutons radios sont cliquables.

Il faut donc que je trouve une autre solution
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
16 juil. 2008 à 14:10
Bonjour

Comment ça ça fonctionne pas sur IE 6 ?

ha oui ce fichu forum a ajouté des caractères bizarres ... marche de moins en moins bien ce truc !

Voici un lien qui fonctionne :
http://phplive.8tt.org/radiobox.htm

0
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 5
16 juil. 2008 à 14:41
Merci beaucoup PhP, c'est tout à fait cela

@ +
0