PDA

Voir la version complète : détecter le "cochage" de boutons radio en boucle


morrissfr
28/01/2007, 09h07
Bonjour!
j'ai une boucle de bouton Radio ainsi conçue :

echo '<form name= "formulaire" method="post" action="enregistre.php">';
for ($i=1;$i<$nb_champ;$i++){
echo "<input type='radio' name='coche[]' value='$i'>";
}
echo '<input type="submit" name="Submit" value="Envoyer">';

Je voudrais ajouter une fonction JavaScript qui détecte si on a coché aucune case du genre, dans le formulaire:
echo '<form name= "formulaire" method="post" action="enregistre.php" onSubmit="return controle()">';
et dans la fonction "controle()" détecter si on a coché ou pas. La méthode classique de vérifier qu'un élément du formulaire est vide ne fonctionne pas car tous les boutons radio on une valeur : $i
Si quelqu'un peut m'aider .... Merci beaucoup
Laurent

Abogil
28/01/2007, 09h13
Il faudrais que tu ailles sur un forum dédié Javascript tel que http://www.javascriptfr.com/. ;)

morrissfr
28/01/2007, 09h45
Je vais essayer aussi... mais j'étais venu ici parce que le script de base, surtout pour le "value" du coche[], est en php .... mais tu as raison je vais aller voir aussi sur Javascript!
Bon WE
Laurent

kharak
12/04/2007, 03h07
Au niveau de ton contrôle , utilise la fonction javascript suivante :

document.getElementById('non_id').value

et dans ta balise input rajout id="nom_ration"

le name et l'id sont 2 choses différentes :)

ça donnerai quelque chose comme ça :

<input type="radio" id="ration1" name="coche[]" value="$i">

pour la vérification :

if (document.getElementById('ration1').value != "")
{
instruction_1
}
else
{
instruction_2
}

En gros, si la case est cochée, il existera un valeur sinon, il y aura rien :)

izzyway
12/04/2007, 09h56
Tu peux utiliser cette fonction mais il faut pour cela que tu appelles dans ton onsubmit "return controle(this)" et que tes input type radio soient appelés "coche" et non "coche[]":

function controle(f){
var i = 0;
for (i = 0; i < f.coche.length; i++){
if (f.coche[i].checked) return true;
}
return false;
}