Récupérer valeur d'une checkbox

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Répondre
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Récupérer valeur d'une checkbox

Message par calimo »

Avec un select on fait ça :

Code : Tout sélectionner

	var cat  = document.getElementById('cat').options[document.getElementById('cat').selectedIndex].value;
Et avec une input checkbox ? J'ai essayé

Code : Tout sélectionner

	var LLOnly  = document.getElementById('cat').input[document.getElementById('LL')].value;
mais j'ai une erreur :
Erreur : document.getElementById("cat").input has no properties
Fichier Source : file:///C:/Documents%20and%20Settings/Xavier/Bureau/classement-FF-proprio.js
Ligne : 6
Quelle est la bonne syntaxe ?
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

t'as déjà vu une checkbox dans une liste déroulante ? ;-)
Et puis il n'existe pas de collection prédéfinie nommée 'input'.

Je suppose que c'est pour ta page d'extensions, donc il n'y a pas de formulaire. Dans ce cas, tu récupères ton input comme tu récupèrerais n'importe quel nœud.
« La vie d’un geek est un combat perpétuel contre l’imperfection »
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Il me semble bien l'avoir mise en dehors de la liste déroulante. En tous cas elle apparaît bien séparément 8)

J'ai essayé

Code : Tout sélectionner

	var LLOnly  = document.getElementById('LL').value;
mais ça me retourne toujours "on" que je coche ou que je décoche la case..

Finalement avec

Code : Tout sélectionner

	var LLOnly  = document.getElementById('LL').checked;
ça fonctionne :D
Est-ce que c'est bien juste ou c'est un pur coup de bol ?

Reste à mettre en place un cookie pour stocker tout ça, mais il n'y a rien d'urgent :wink:

Merci !
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

calimo a écrit : J'ai essayé

Code : Tout sélectionner

	var LLOnly  = document.getElementById('LL').value;
mais ça me retourne toujours "on" que je coche ou que je décoche la case..

Finalement avec

Code : Tout sélectionner

	var LLOnly  = document.getElementById('LL').checked;
ça fonctionne :D
Est-ce que c'est bien juste ou c'est un pur coup de bol ?
À partir du moment où ton input a l'identifiant 'LL', c'est bon. Lui donner un identifiant était-il indispensable ? Tu peux peut être récupérer le nœud en te baladant dans l'arbre. Admettons que ton input suive immédiatement ton select dans la structure du document. Il te suffirait de faire var tonInput = tonSelect.nextSibling. Le but est d'éviter de coller des id un peu partout lorsqu'ils ne sont pas indispensables.
Dernière modification par Bobe le 05 janv. 2005, 15:50, modifié 1 fois.
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Pourquoi ne pas utiliser getElementsByName http://www.mozilla.org/docs/dom/domref/ ... ref49.html ?
(attention ça retourne un tableau et pas un seul élément ;))

(le lien vers la spécification est faux par contre, c'est celui-ci le bon : http://www.w3.org/TR/2003/REC-DOM-Level ... D-71555259

P.S. Je pense que tu fais la confusion classique entre attribut et propriété.
Pourquoi value ne marche pas :
http://www.w3.org/TR/2003/REC-DOM-Level ... D-49531485
Changing this attribute changes the contents of the form control, but does not change the value of the HTML value attribute of the element.
Dernière modification par Benoit le 05 janv. 2005, 16:56, modifié 1 fois.
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

Et pour répondre au niveau pratique :

var LLOnly = document.getElementById('LL').checked;

LLonly contient true ou false, c'est un booléen.
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Bobe a écrit :À partir du moment où ton input a l'identifiant 'LL', c'est bon. Lui donner un identifiant était-il indispensable ?
Pour le lier au for du label. Il me semble qu'il n'y a pas trop d'autres solutions non ?
Parce que ce n'est pas bon de mettre des id ? Quel est le problème ?
Bobe a écrit :Tu peux peut être récupérer le nœud en te baladant dans l'arbre. Admettons que ton input suive immédiatement ton select dans la structure du document. Il te suffirait de faire var tonInput = tonSelect.nextSibling. Le but est d'éviter de coller des id un peu partout lorsqu'ils ne sont pas indispensables.
Ah oui ça pourrait en effet :)
Benoit a écrit :Pourquoi ne pas utiliser getElementsByName http://www.mozilla.org/docs/dom/domref/ ... ref49.html ?
(attention ça retourne un tableau et pas un seul élément Clin d'oeil)
Parce qu'il n'y a pas de name ? :lol: Je peux en mettre un mais quel avantage par rapport au id ?
Benoit a écrit :(le lien vers la spécification est faux par contre, c'est celui-ci le bon : http://www.w3.org/TR/2003/REC-DOM-Level ... D-71555259
Je n'ai pas vu d'autres liens... :? De quel lien parlais-tu ?
Benoit a écrit :P.S. Je pense que tu fais la confusion classique entre attribut et propriété.
Pourquoi value ne marche pas :
http://www.w3.org/TR/2003/REC-DOM-Level ... D-49531485
C'est fort probable en effet. :wink: Et j'ai aussi trop voulu voir la similarité avec ce qu'on fait dans un select où on veut bien récupérer l'attribut value :oops:
Mais maintenant je cherche bien l'attribut checked, et ça tombe bien je fais justement un test booléen sur celui-ci 8)
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

calimo a écrit : Pour le lier au for du label. Il me semble qu'il n'y a pas trop d'autres solutions non ?

Code : Tout sélectionner

<label>blabla& #160;: <input ....></label>
Ça marche très bien ça aussi.
Parce que ce n'est pas bon de mettre des id ? Quel est le problème ?
C'est juste une question de logique. On ne va pas mettre des id sur chaque élément présent dans la page. Il faut simplement en mettre là où c'est indispensable.
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

calimo a écrit :
Benoit a écrit :Pourquoi ne pas utiliser getElementsByName http://www.mozilla.org/docs/dom/domref/ ... ref49.html ?
(attention ça retourne un tableau et pas un seul élément Clin d'oeil)
Parce qu'il n'y a pas de name ? :lol: Je peux en mettre un mais quel avantage par rapport au id ?
Strictement aucun si la checkbox n'est pas envoyée avec un formulaire, mais c'est ce que j'avais cru comprendre :)
Benoit a écrit :(le lien vers la spécification est faux par contre, c'est celui-ci le bon : http://www.w3.org/TR/2003/REC-DOM-Level ... D-71555259
Je n'ai pas vu d'autres liens... :? De quel lien parlais-tu ?
Celui dans la référence DOM, il pointe vers getElementByTagName qui n'est pas la même méthode, et pas dans le même DOM (Core au lieu de HTML)
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Très bien, merci à tous ! :wink:
lpgc
Lézard à collerette
Messages : 259
Inscription : 16 juil. 2006, 01:02

Message par lpgc »

bonjour, :D
j'ai lu cet article parceque j'avais sous Firefox le message d'erreur suivant
Erreur : document.getElementById("ckachat") has no properties
sur le code :

Code : Tout sélectionner

			if (document.getElementById("ckachat").checked)
Après une recherche sur Google.... cette question est souvent posée : çà fonctionne sous IE et pas sous Firefox
Cherchez l'Erreur de mon code :shock:

Code : Tout sélectionner

    stable = stable & "<input type='checkbox' name='ckAchat' id='ckAchat' onclick='setMy(this);'"
    if wdvdAchete then
    	stable = stable & " checked"
    end if
    stable = stable & " value='ON'>"
:?: Trouvé ....
:idea: Dans l' ID.... j'ai pas fait attention aux majuscules :
ckachat c'est pas ckAchat... IE fait pas la différence

J'espère que çà pourra aider... j'ai dû chercher trop longtemps :evil:
Cordialement :D
Christian



Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 6 invités