Radio button et javascript

20 réponses
AuteurMessage

Maxiricky |
Membre

 

Inscrit le : 14/08/2006

# Le 17/09/2008 à 18:17

Salut à tous,

Je débute en javascript (commencé ya 2h) et je bloque sur un truc tout bête forcément...

L'idée c'est que j'ai un formulaire, dans lequel j'ai 1 champ sous forme de radio bouton. Par défaut je décoche, pour vraiment laisser le choix entre OUI et NON (il s'agit du champs pour être opt-in partenaire et je suis sympa je coche par OUI par défaut ).

Mais du coup, je veux rendre la sélectionner du oui ou du non, obligatoire. Et ça ne marche pas...

Dans mon html j'ai :

<label for="partenaire" id="partenaireLabel">Je souhaite recevoir les offres<br />des partenaires </label>
<div id="partenaireZone"><input type="radio" name="partenaire" id="partenaire" value="1" /><strong> OUI    </strong><input type="radio" name="partenaire" value="0" /> non</div>

Et dans mon .js :

function formProcess2() {
if (
(document.getElementById('partenaire').checked != true) ||
(document.getElementById('reglement').checked != true)
) {
alert('Veuillez remplir tous les champs et accepter le règlement s\'il vous plaît');
}
else {
document.inscription.submit();
}
}

Donc pour le règlement (qui est une checkbox) ça vérifie bien que c'est coché. Mais pour le radio bouton (partenaire) ça ne fonctionne pas. Je suppose qu'il ne s'agit pas d'un ".checked" qui s'applique sans doute uniquement aux checkbox.

Alors de quoi s'agit-il ?

Merci par avance !

On est toujours moins loin que si on y était pas encore

jdelire | Lilian
Membre

Photo de jdelire

Inscrit le : 14/05/2005

# Le 17/09/2008 à 18:28

Essai:

document.getElementsByTagName("partenaire").checked
avec i comme numéro de tes radio

Slwo.frOuvrir dans une nouvelle fenetre

PyRoFlo | Florent
Modérateur

Photo de PyRoFlo

Inscrit le : 09/05/2005

# Le 17/09/2008 à 18:32

http://www.toutjavascript.com/savoir/savoir06_2.ph...Ouvrir dans une nouvelle fenetre

Il ne faut pas utiliser l'attribut id qui comme son nom l'indique doit être unique.
Dans ce cas il vaut mieux utiliser un truc du style :

if (!document.forms ['monForm'].partenaire [0].checked
|| !document.forms ['monForm'].partenaire [1].checked
|| !document.forms ['monForm'].reglement.checked)

Feu d'artifice ParisOuvrir dans une nouvelle fenetre

Maxiricky | Arnaud
Membre

 

Inscrit le : 14/08/2006

# Le 17/09/2008 à 19:18

Merci pour vos réponses !

J'ai essayé vos différentes méthodes mais ça ne fonctionne pas, en tous cas je n'ai pas dû faire les bonnes manip.

Pour + de simplicité voici mes 2 codes complets avec le formulaire complet :

PHP :
<label for="partenaire" id="partenaireLabel">Je souhaite recevoir les offres<br />des partenaires</label>
<div id="partenaireZone"><input type="radio" name="partenaire" id="partenaire" value="1" /><strong> OUI    </strong><input type="radio" name="partenaire" value="0" /> non</div>

<label for="coregistration" id="coregistrationLabel">Je m'inscris à la newsletter <br /></label>
<div id="coregistrationZone"><input type="radio" name="coregistration" id="coregistration" value="4" /><strong> OUI    </strong><input type="radio" name="coregistration" value="0" /> non</div>

<input type="checkbox" name="reglement" id="reglement" value="1" />
<label for="reglement" id="reglementLabel">J'accepte le règlement</label>

JS :
function formProcess2() {
if ( (document.getElementById('adresse').value.replace(/[\s]+$/g,'') == '') ||
(document.getElementById('cp').value.replace(/[\s]+$/g,'') == '') ||
(document.getElementById('ville').value.replace(/[\s]+$/g,'') == '') ||
(document.getElementById('pays').value.replace(/[\s]+$/g,'') == '') ||
(document.getElementById('jour').value.replace(/[\s]+$/g,'') == '') ||
(document.getElementById('mois').value.replace(/[\s]+$/g,'') == '') ||
(document.getElementById('annee').value.replace(/[\s]+$/g,'') == '') ||
(document.getElementById('reglement').checked != true)
) {
alert('Veuillez remplir tous les champs et accepter le règlement s\'il vous plaît');
}
else {
document.inscription.submit();
}
}


(Je n'ai simplement pas mis tout le html des premiers champs.)

En fait ce que je ne comprends pas c'est comment le Javascript peut savoir si au moins 1 des 2 choix du radio bouton est sélectionné (j'ai rajouté un radio bouton "coregistration" au fait)

(Message édité le 17-09-2008 à 22h35 par Maxiricky)

On est toujours moins loin que si on y était pas encore

jdelire | Lilian
Membre

Photo de jdelire

Inscrit le : 14/05/2005

# Le 18/09/2008 à 09:19

Essaie:

if(document.ton_formulaire.partenaire[0].checked==false && document.ton_formulaire.partenaire[1].checked==false){
alert("Aucun bouton coché");
}

Slwo.frOuvrir dans une nouvelle fenetre

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 18/09/2008 à 09:21

et le Jquery tu as essayé ?

$('#partner').is(':checked') || $('#reglement').is(':checked')

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 18/09/2008 à 09:29

J'arrive pas a me faire a la syntaxe jquery. Personne n'a une bonne url de tuto ou autres ?

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 18/09/2008 à 09:39

http://docs.jquery.comOuvrir dans une nouvelle fenetre

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

ultrajoe | Jérôme
Membre

Photo de ultrajoe

Inscrit le : 16/07/2008

# Le 18/09/2008 à 09:42

La documentation est vraiment bien faite avec pleins d'exemples d'utilisation, tu vas un peu tâter au début mais ça vient vite.
Donc persévère avec la doc officielle c'est le mieux.

http://docs.jquery.com/Main_PageOuvrir dans une nouvelle fenetre ;-)

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 18/09/2008 à 10:10

<hs>C'est justement à cause de ce genre de syntaxe non maintenable sur le long terme qu'ici on a basardé Mootools au profit de Dojo.</hs>

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

tty2 | Serge
Modérateur

Photo de tty2

Inscrit le : 10/05/2005

# Le 18/09/2008 à 10:18

hs: regardez ce post sous ie !
sous ie c'est pas vraiment facile de l'aider

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 18/09/2008 à 10:36

Quel est l'interet de jquery puisqu'il y a le javascript ?
C'est pas plus utile de maitriser le js (et toute la techno ajax du meme coup) que de se lancer dans un apprentissage d'un doublon ?

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

mirage | Vincent
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 18/09/2008 à 11:22

Je trouve que jQuery est bien plus simple que la syntaxe JavaScript : moins à écrire, les fonctions ont des noms évidents, etc.

Bref, je préfère charger un fichier de quelques ko sur chaque page et pas me casser les pieds avec la syntaxe (m'enfin on en a déjà parlé ici)

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 18/09/2008 à 11:35

devtribu : le principal intérêt de ces trucs c'est d'assurer la compatibilité multi navigateur sans avoir à connaitre les spécificités de chacun.

Mais comme dit Mirage, on en a déjà parlé dans le topic Librairies JavaScriptOuvrir dans une nouvelle fenetre .

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Maxiricky | Arnaud
Membre

 

Inscrit le : 14/08/2006

# Le 18/09/2008 à 11:57

Merci 1000 fois !

J'ai enfin réussi. Alors je n'ai pas testé jQuery, étant vraiment débutant depuis hier en JS...

Mais avec la méthode de jdelire ça fonctionne.

Donc merci encore ;)

On est toujours moins loin que si on y était pas encore

Maxiricky | Arnaud
Membre

 

Inscrit le : 14/08/2006

# Le 01/10/2008 à 12:14

Salut,

Bon je relance ce topic car je m'aperçois d'une erreur de ma part... mais bien entendu je ne sais pas d'où elle vient :/

avec ce JS :
(document.inscription.coregistration[0].checked==false && document.inscription.coregistration[5].checked==false) ||

je me rend compte que j'oblige en fait les visiteurs à cocher le OUI, c'est à dire la value 5.
Mais je veux juste qu'il fasse un choix oui ou non...

Savez-vous d'où cela peut venir ?

On est toujours moins loin que si on y était pas encore

jdelire | Lilian
Membre

Photo de jdelire

Inscrit le : 14/05/2005

# Le 01/10/2008 à 12:26

document.inscription.coregistration[0].checked==false && document.inscription.coregistration[1].checked==false

Slwo.frOuvrir dans une nouvelle fenetre

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 01/10/2008 à 13:24

Maxiricky> autant quand le problème est "technique" on est la pour t'aider a trouver la solution technique, autant la c'est un probleme d'algo qui doit demander 3 secondes de concentration pour etre resolu.

Fais un petit effort, et en plus tu gagneras du temps a trouver la solution par toi meme

Fred | Frédéric
Modérateur

Photo de Fred

Inscrit le : 09/05/2005

# Le 01/10/2008 à 13:27

Telaxo a dit :
c'est un probleme d'algo qui doit demander 3 secondes de concentration


de l'algo flash donc

"Le bois ne rend pas les coups"

MathieuC | Mathieu
Modérateur

Photo de MathieuC

Inscrit le : 15/07/2005

# Le 01/10/2008 à 13:34

ouais, du speed algoting

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 7:33:03 | Généré en 10.49ms | Contacts | Mentions légales |