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 :

Interception d'une modification d'input par le JS


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 141
    Points : 64
    Points
    64
    Par défaut Interception d'une modification d'input par le JS
    Bonjour à tous,

    Je me heurte au problème suivant :
    J'ai deux input dont l'un (visible) est alimenté par l'autre (de type hidden). Le champ caché pouvant être mis à jour par une fonction js.
    Il faut alors (chose que je n'arrive pas à faire) que je répercute cette modification dans mon champ visible.

    Y a t-il un moyen d'intercepter d'une modification d'input faite par une fonction JS (ex : document.monInput.value="toto") ?

    Si oui quelqu'un pourrais-il me mettre sur la piste, car je n'ai pour le moment absolument rien trouvé qui marche.

    Merci d'avance à tous.
    TOF

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    euh, c'est une blague ou quoi?

    si tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.monInput.value="toto"
    pourquoi tu ne fais pas dans la foulée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.monInput_visible.value="toto"
    ?

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Attention,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.nomForm.nomInput.value="tata";
    A+.

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Oui andry, ce n'est pas faux

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms['nomForm'].elements['nomInput'].value="tata";
    mais on va pas chipoter

  6. #6
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 141
    Points : 64
    Points
    64
    Par défaut
    Merci à tous pour vos réponses mais c'est un peu plus compliqué sinon je n'aurais pas poser la question

    En fait je ne peux pas toucher la fonction JS m'étant à jour ces champs. Il faudrait que sur le changement de mon input hidden se déclenche un appel js pour mettre à jour mon champ visible.

    Ce qui me pose problème c'est que je n'arrive pas a déclencher cette événement sur mon input hidden car j'ai l'impression que son changement de valeur (effectué par le JS que je ne peut pas toucher) n'engendre aucun événement. Est-ce vrai ? si oui comment contourner le problème ?

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    Bonsoir,
    il est vrai qu'il est bien dommage que l'événement onchange ne se déclenche pas lors d'une modification de la value via le javascript.

    Il existe deux méthodes pour arriver à tes fins, la bourrin et la filoute

    - la méthode dite du bourrin, tu fais une vérification périodique via un setInterval.

    - la méthode dite du filou, tu détournes la fonction et tu la remplaces par la tienne qui fait d'abord appel à celle ci, ce qui te permet de rajouter du code perso.

    exemple :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <!DOCTYPE html>
    <html>
    <head>
    <title>[Version Filoutte...]</title>
    </head>
    <body>
    <input id="cache" type="text" value="undefined" disabled>
    <select onchange="changeValeur( this);">
      <option value="un">un</option>
      <option value="deux">deux</option>
      <option value="trois">trois</option>
      <option value="quatre">quatre</option>
      <option value="cinq">cinq</option>
    </select>
     
    <br><input id="modif" type="text" value="">
    <script type="text/javascript">
     
    // variable
    var oSrce = document.getElementById('cache');
    var oDest = document.getElementById('modif')
     
    // la fonction que je ne peux pas modifier
    function changeValeur( obj){
      oSrce.value = obj.value;
    }
    // sauvegarde la fonction
    var oldChange = changeValeur;
     
    // redefini la fonction
    changeValeur = function(){
        // appel de l'ancienne
        oldChange.apply( null, arguments);
        // ajout mon code
        oDest.value = oSrce.value;
      };
    </script>
    </body>
    </html>
    la fonction non modifiable est simuler par le onchange sur le SELECT, et le INPUT hidden est ici en readonly

  8. #8
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 141
    Points : 64
    Points
    64
    Par défaut
    Merci pour cette réponse mais la mise en place en cette solution pour moi ne fonctionne pas car la fonction que je ne peut pas touchée fait une redirection

    je crois que je suis coincé

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    Citation Envoyé par drumtof Voir le message
    Merci pour cette réponse mais la mise en place en cette solution pour moi ne fonctionne pas car la fonction que je ne peut pas touchée fait une redirection
    j'ai du mal à comprendre l'intérêt de modifier la valeur d'un champ si une fois la mise à jour du champ hidden une redirection est réalisée.

    - Si c'est toi qui traite la redirection, je penses que oui à priori, je ne vois pas l'intérêt de 2 champs pour une même valeur.
    - Demande à l'auteur du script de modifier sa fonction...

    Mais je pense que quelque chose m'échappe

  10. #10
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Cette histoire de redirection me laisse perplexe moi aussi. Sinon, j’ai pensé à la mystérieuse méthode watch mais c’est un truc spécifique à Mozilla.

    En tout cas, comme la propriété value est modifiée programmatiquement, la technique watch fonctionne, je viens de tester.

    Drumtof, si ça t’intéresse, tu peux essayer de mettre en œuvre la solution cross-browser proposée sur Stackoverflow, en gardant à l’esprit que, de toute façon, ça ne marchera pas sur les versions d’IE inférieures à 8.


  11. #11
    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 : 54
    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 IE, tu as toujours l'événement onafterupdate
    Ceci dit drumtof, pour que l'on puisse t'aider efficacement, il serait bon d'être plus précis quant au problème rencontré et l'environnement dans lequel tu te trouve...

  12. #12
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 141
    Points : 64
    Points
    64
    Par défaut
    Merci à tous pour vos réponses et dsl de mon imprécision. J'intègre un progiciel de GED avec des évolutions spécifiques du client et j'essaie de toucher un minimum le progiciel pour la portabilité dans les versions supérieures.

    Mais ici dans mon cas précis je n'aurais pas le choix de toucher le progiciel.

    Merci pour votre aide et votre soutiens tjrs aussi efficace.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/11/2011, 20h57
  2. Réponses: 5
    Dernier message: 30/11/2010, 17h04
  3. Réponses: 2
    Dernier message: 29/09/2009, 17h21
  4. regexp = extraire value d'une balise input par son "name"
    Par NoobX dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/06/2008, 16h03
  5. remplir un Input par rapport à une BD
    Par pmboutteau dans le forum ASP
    Réponses: 10
    Dernier message: 24/08/2005, 10h35

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