Pb validation radio button

Eléphanteau du PHP | 17 Messages

18 nov. 2005, 13:49

Bonjour, voici mon problème. j'ai une liste de boutons radio. Il y a un cas particulier qui doit déclencher une erreur selon plusieurs conditions : la valeur du bouton radio doit être égale à 'contreremb', le pays doit être différent de 'France' ou (le pays est égal à 'France' et le code_postal est égal à '97...' ou '98...'). Voici mon code :

Code : Tout sélectionner

echo '<input type="radio" name="mode_paiment" value="ch"> <font class="texte"><b>Par chèque</b></font><br />'; echo '<input type="radio" name="mode_paiment" value="tel"> <font class="texte">Par téléphone</font><br />'; echo '<input type="radio" name="mode_paiment" value="vir"> <font class="texte">Par virement</font><br />'; echo '<input type="radio" name="mode_paiment" value="contreremb"> Par contre remboursement
et le javascript qui valide :

Code : Tout sélectionner

if(document.fAchat.mode_paiment.value == "contreremb" && ((document.fAchat.pays.value != 'France') || (document.fAchat.pays.value == 'France' && (document.fAchat.code_postal.value.substr(0,2) == '97' || document.fAchat.code_postal.value.substr(0,2) == '98'))){ alert('salut'); }
fAchat étant le nom du formulaire, j'ai déjà vérifié son orthographe.

l'erreur que j'ai c'est 'objet attendu'. Quand j'enlève la deuxième partie de la validation comme ceci :

Code : Tout sélectionner

if(document.fAchat.mode_paiment.value == "contreremb")
il ne rentre pas dans le if alors qu'il devrait.

Voilà. Merci pour vos réponses.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

19 nov. 2005, 03:41

Salut, remplace
document.fAchat.mode_paiment.value
par
document.fAchat.mode_paiment[3].value
il faut séléctionner un bouton précis et non pas le groupe.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 17 Messages

21 nov. 2005, 19:02

Ok pour cette solution, mais comment je peux faire pour sélectionner le radio button cliqué ? je vois bien qu'il faut le mettre dans les crochets, mais par contre je vois pas comment le récupérer.

Merci d'avance.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 nov. 2005, 19:58

je vois pas trop ce que tu veut en plus, avec la ligne que je t'ai montré tu récupère la valeur.

Il suffit donc de remplacer dans ton code:
if(document.fAchat.mode_paiment[3].value == "contreremb" && ((document.fAchat.pays.value != 'France') || (document.fAchat.pays.value == 'France' && (document.fAchat.code_postal.value.substr(0,2) == '97' || document.fAchat.code_postal.value.substr(0,2) == '98'))){
 alert('salut');
} 

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 17 Messages

21 nov. 2005, 20:07

en fait, je voulais savoir comment récupérer cette valeur [3], mais j'ai trouvé. Pour ceux que çà intéresse, voici la solution :

Code : Tout sélectionner

var modePaiement = ''; for (var i=0; i<document.fAchat.mode_paiment.length;i++) { if (document.fAchat.mode_paiment[i].checked){ modePaiement = document.fAchat.mode_paiment[i].value; } }
il faut donc faire une boucle en javascript pour récupérer la valeur du bouton radio sélectionné. Que du bonheur.

En tout cas, merci.