Test bouton radio probleme

MrOH -  
 MrOH -
Bonjour,

J'ai un souci avec une fonction javascript que j'utilisais jusqu'ici sans problème, mais lors d'un cas particulier elle bloque.
Je m'explique, j'ai une liste de forfait provenant d'une table de données que j'affiche sur ma page, pour chaque éléments de cette liste il y'a un bouton radio. A la validation du formulaire, il me faut qu'il y ait au moins un qui est coché ( un forfait choisi).
Jusque la ça fonctionnais très bien, les listes contenait toujours plusieurs forfaits.
Dans une des page ,il n'existe qu'un seul forfait, donc qu'un seul bouton radio qui s'affiche,,,et la ça bloque,,,,,,ça bloque meme quand on le coche.
Quand j'affiche le contenu de la variable document.form.forfait.length dans une page ou il y'a plusieurs forfait, elle me renvoi bien le bon nombre de bouton radio, affiché,,,,mais sur une page ou il n'y a qu'un seul forfait, cette même propriété affiche "undefined".
A partir de 2 ça fonctionne, mais des qu'il n'y a qu'un seul bouton radio,,,elle me renvoi undefined.
Qu'elqu'un pourrait il m'aider,,,c'est surmenât bête comme trucs, mais je n'arrive pas à le voir.
Merci pour votre coup de main.

Voici le code javascript de verif :
function verif()
{
for(i = 0; i < document.form.duree.length; i++){
if(document.form.duree[i].checked) return true;
}
alert("Vous devez choisir un forfait pour accéder au formulaire de réservation");
return false;

Et voici le code qui affiche mes bouton radio sur la page :

$g=0;
$mysqlTool = new Classe_BD();
if ($mysqlTool->query("SELECT * FROM ".$BD." WHERE ".$societe."= '".$ref."' ORDER BY id ASC")){
while ($mysqlTool->next_record()){

$forfait[$g]= $mysqlTool->f("forfait");

echo '<input type="radio" name="forfait" value="'.$forfait.'" />  $forfait';
}
}

Merci
A voir également:

2 réponses

Utilisateur anonyme
 
Bonjour,

A priori, quand vous n'avez qu'un radio document.form.forfait est l'objet radio, donc length n'a pas de sens (c'est une propriété des tableau uniquement) mais lors que dans votre DOM vous avez plusieurs radios avec le nom forfait, document.form.forfait deient un tableau d'objets radio, et là length a un sens.

Vous pouvez utilisez la fonction is_array pour vérifier que c'est un tableau ou un objet et adapter le code en conséquence.
0
MrOH
 
Oui effectivement, c'est exactement ça.
Quand il y a un élément il n'est pas considéré comme un tableau. j'ai resolu cela en testant d'abord la valeur de lenght , et de tester suivant sa valeur, soit la variable forfait soit le tableau forfait[i].
La solution is_array pourrait également fonctionner.

<script type="text/javascript">
function verif()
{
if (document.form.forfait.length == undefined){

if(document.form.forfait.checked) return true;

}else{

for(i = 0; i < document.form.forfait.length; i++){
if(document.form.forfait[i].checked) return true;
}
}
alert("Vous devez choisir un forfait pour accéder au formulaire de réservation");
return false;
}
</script>
0