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

jQuery Discussion :

JQuery - Javascript - Evenement Change


Sujet :

jQuery

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 89
    Points : 83
    Points
    83
    Par défaut JQuery - Javascript - Evenement Change
    Bonsoir

    J'ai un souci que je ne sais pas résoudre.

    J'utilise la fonction change sur une boite de sélection pour afficher certaines balises (affichage d'informations complémentaires)
    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
     
    jQuery(document).ready(function() {
        $("#htmlname").change(function() {
        <!--- appel au serveur pour obtenir les infos --> 
     
        $("#telmail").html(response.telmail);
    	$("#telmail").css("visibility", "visible");
    	$("#spantiersmail").css("visibility", "visible");
    	$("#tierstel").css("visibility", "visible");
    	$("#tierstel").val(response.tel);
    };
    }
    <!-- champ de saisie -->
    <br>'."\n"
    <input id="htmlname" type="text" name="htmlname" value="'"  >


    Ceci me permet de saisir un client existant et d'obtenir son téléphone et un champ d'info tel-mail de ses contacts.

    Si je veux créer un nouveau tiers, je vais saisir son nom dans une autre boite, avec, dès qu'on clique, la remise à zero des champs précédents éventuellement renseignés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <input id="'.$htmlnvname.'" type="text" name="htmlnvname"  onclick="EffaceTiers(this)" >
     
    function EffaceTiers(o) {
    	if ( o.value == "nouveau tiers")
    		document.getElementById("htmlnvname").value="";  
    	 	document.getElementById("htmlnvname").style.color="#000000"; 
    		document.getElementById("htmlname").value=""; 
    		document.getElementById("telmail").innerHTML="";  
    		document.getElementById("telmail").style.visibility = "hidden"	
    		document.getElementById("tierstel").style.visibility = "visible";
    		document.getElementById("tierstel").value=""; '; 
    }
    (PS - si vous trouver des restes de caractères type '," ou $, c'est que ce code est un extract de ce que j'ai écrit en PHP)

    Ca marche pas mal, sauf que, dans la routine EffaceTiers, il y a la modification du champ htmlname , ce qui provoque l'activation de la routine change de ce champ, et ceci remet remet les anciennes valeurs de mes champs testel et telmail.

    C'est pas top!

    Quel subterfuge pour parer cela? Une variable globale? Est-ce que cela existe, une syntaxe qui permette à une variable qu'être reconnue par tous ces petits bouts de programme? Je sais que je pourrais la transformer de jquerry à javascript. Pour pour larendre globale?

    Est-ce que j'ai été claire? Est-ce que quelqu'un a une idée?

    Merci

    Claude

  2. #2
    Membre confirmé Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Points : 509
    Points
    509
    Par défaut
    oui c'est possible: en javascript une variable globale peut-être déclarée sans le mot clé "var" à l'intérieur d'une fonction, et avec ou sans au niveau racine (elle sera enfant de window).
    tu as besoin uniquement d'un "booleén" que tu mets soit sur true soit sur false au moment de l'édition de l'input d'id "htmlname", et que tu testes dans le onchange, s'il fait la valeur attendue qui indique que le changement vient du script et non de l'utilisateur, tu le mets sur l'état contraire avec par exemple:
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
              bool=!bool;
    Sinon, il y a plus simple, pour éviter ce subterfuge, tu peux passer par les écouteurs onkeyup et onpaste (le second pour le cas du copier coller)
    0x4F

  3. #3
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 89
    Points : 83
    Points
    83
    Par défaut
    Merci, 01001111, tu as été rapide, mais j'étais partie me coucher !!!

    Pour le booléen, merci des indications, c'est bien ce que j'envisageais
    Pour ce qui est de onKeyup, j'ai fait un essai non concluant, peut-être faut-il que j'approfondisse.
    Et je ne connaissais par onpaste.

    Cordialement
    Claude

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

Discussions similaires

  1. Evenements Change Text
    Par hay2006 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 20/12/2006, 21h45
  2. Evenement change()
    Par sunvialley dans le forum Access
    Réponses: 4
    Dernier message: 02/05/2006, 16h58
  3. [FLASH 8] Evenement change
    Par aldo-tlse dans le forum Flash
    Réponses: 5
    Dernier message: 02/12/2005, 14h02
  4. Evenement Change
    Par PierDIDI dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/08/2002, 10h08

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