IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

event sur radio buttons : onclick, setTimeout,onchange


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 42
    Points : 38
    Points
    38
    Par défaut event sur radio buttons : onclick, setTimeout,onchange
    Bonjour, j’ai un problème lié aux radios buttons en JavaScript.
    Je suis loin d’être un expert en la matière.

    J’ai un champs pour rentrer un poids, à coté deux radio Button (Kilo,pounds) dans un groupe.
    Avec un Onclick qui change la valeur du champ de kilo à pounds en divisant ou multipliant.

    100 ● kilos ○ pounds
    220 ○ kilo ● pounds

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    onclick="javascript:cm_to_inchesVal('height');"
     
    function kg_to_pounds(field) {
    	var convert;
    	var weight = parseInt(document.getElementById (field).value);
    	if (!isNaN(weight)) {
    		convert = Math.round(weight * kgTolbs);
    		if (convert == 0)
    			document.getElementById (field).value = "";
    		else
    			document.getElementById (field).value = convert;
    	} else {
    		document.getElementById (field).value = "";
    	}
    }
    Problème :
    Tout fonctionne bien tant que l’utilisateur alterne les clicks sur les radios bouttons.
    Évidemment, avec le onclick, quand je clique plusieurs fois de suite sur un des radios boutons la valeur affichée continue de se multiplier (ou de se diviser).
    Comment faire pour que mon script ne soit appelé que si le boutton a réellement été switché ? (Avec la souris et le clavier)



    Solutions que j’ai (mal ?) essayées:
    J’ai remplacé le onclick par onchange qui ne fonctionne pas sous IE.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="javascript: kg_to_poundsVal (‘weight’);"
    J’ai ajouté un setTimeOut au onchange qui ne fonctionne pas mieux sous IE.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange=”javascript:setTimeout(function(){kg_to_pounds('weight'),100});”
    J’ai écrit une nouvelle fonction JavaScript (kg_to_poundsVal) pour tester la valeur du radio Boutton et faire la conversion uniquement si celui-ci a réellement changé mais d’après ce que j’ai pu voir, le onlick est « raisé » après que le boutton a changée. Du coup le radioButton sur lequel je viens de cliquer est toujours checked.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    onclick="javascript: kg_to_poundsVal (‘weight’);"
     
     
    function kg_to_poundsVal(value){
    	if (!document.formRequestDetailForm.heightUnit[1].checked){
    		kg_to_pounds (value);
    		}
    	}
    J’ai remplacé onclick par onmousdown qui lui est raisé avant le changement (qui résou le problème ci-dessus). Fonctionne bien avec la souris mais pas en cas de navigation au clavier.

    Du coup je suis un peu bloqué.

    Que dois-je faire ?

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu pourrais montrer le code html de tes boutons.
    A priori ton problème vient de là. Il faut leur donner le même name et ensuite vérifier lequel est checked.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 42
    Points : 38
    Points
    38
    Par défaut
    On utilise des taglibs perso donc je te donne le résultat HTML

    C'est justement le fait de regarder lequel est checké qui ne fonctionne pas puisque la valeur a déjà changée quand j'arrive dans le JavaScript.
    Je voudrai connaitre celui qui était True AVANT le clic en fait.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    <input name="weight" maxlength="3" size="5" tabindex="47" value="" id="weight" class="TB" type="text">
    <input name="weightUnit" tabindex="48" value="Y" checked="checked" onclick="javascript:pounds_to_kg('weight');" id="weightUnit" type="radio">
    kg
    <input name="weightUnit" tabindex="49" value="N" onclick="javascript:kg_to_pounds('weight');" id="weightUnit" type="radio">
    pounds

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Pour ça tu peux utiliser un attribut "value" à tes input que tu modifies au click

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 42
    Points : 38
    Points
    38
    Par défaut
    effectivement c'est la solution que je cherchait.
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Action sur radio buttons
    Par loutoune54 dans le forum jQuery
    Réponses: 2
    Dernier message: 01/03/2013, 12h24
  2. Affichage sur Radio button en utilisant DATABINDING
    Par xpx-ayoub dans le forum VB.NET
    Réponses: 7
    Dernier message: 23/12/2010, 09h49
  3. Réponses: 3
    Dernier message: 05/03/2008, 09h35
  4. Event sur Tspeed button
    Par cfdev dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/01/2008, 12h05
  5. focus sur un radio button
    Par NikoBe dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/11/2006, 14h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo