Rechercher : dans
Par :

Bouton radio à cocher

Dernière réponse le 16 jui 2008 à 14:41:24 JB_A, le 15 jui 2008 à 17:34:09 
 Signaler ce message aux modérateurs

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
Configuration: Windows XP
Internet Explorer 6.0

1

PhP, le 15 jui 2008 à 17:43:39

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




PhP  
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...

Répondre à PhP

2

JB_A, le 15 jui 2008 à 19:01:46

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

Répondre à JB_A

3

JB_A, le 15 jui 2008 à 19:31:04

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

Répondre à JB_A

4

JB_A, le 15 jui 2008 à 19:42:13

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

Répondre à JB_A

5

PhP, le 15 jui 2008 à 21:23:33
  • +1

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 ...

Répondre à PhP

6

JB_A, le 16 jui 2008 à 13:42:35

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 ?

Répondre à JB_A

7

PhP, le 16 jui 2008 à 14:10:14

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


PhP  
Il y a 10 types de personnes dans le monde : ceux qui compre­nnent le binaire et les autres ...

Répondre à PhP

8

 JB_A, le 16 jui 2008 à 14:41:24

Merci beaucoup PhP, c'est tout à fait cela

@ +

Répondre à JB_A