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 :

Identifier par Name au lieu de Id


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    bordeaux
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Points : 34
    Points
    34
    Par défaut Identifier par Name au lieu de Id
    Bonjour,

    Voici mon script qui permet de préremplir un champ et de cliquer automatiquement sur le bouton "entrer".
    Je voudrais utiliser "name" au lieu de "id" pour identifier mon bouton,
    donc remplacer "document.getElementById" par "document.getElementsByName" dans la fonction "clic" mais je n'arrive pas à faire fonctionner le script.

    Voici mon code:

    Code HTML : 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
    <!DOCTYPE html>
    <html>
    <body>
     
    <h3>Prefill & autoclick</h3>
     
    <input id="myInput">
    <input value="Entrer" type="submit" name="testname" id="myBtn" onclick="javascript:alert('Clicautomatique')">
     
    <script>
     
           function lp()
            {
             var couleur = document.getElementById("myInput");
              if (couleur != null) {
              couleur.value = "rouge";
              return;
            }
              setTimeout(function(){lp();}, 100);
            }
                  setTimeout(function(){lp();}, 100);
           
           function clic()
            {
              evt = document.createEvent("MouseEvents");
              evt.initMouseEvent("click", true, true, window,0, 0, 0, 0, 0, false, false, false, false, 0, null);
              document.getElementById("myBtn").dispatchEvent(evt);
             }
              
             setTimeout(clic,1000);
     
    </script>
    </body>

    Après je me disais, existe t'il un moyen "d'appuyer automatiquement sur la touche Entrée SI le champs est rempli" ?

    Je vous remercie pour votre aide,
    Marion

  2. #2
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 740
    Points
    4 740
    Par défaut
    salut...
    Est-ce que tu as remarqué que la méthode getElementsByName était obligatoirement plurielle ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     document.getElementsByName('myInput')[0].value = 'toto'
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    bordeaux
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    oui tout à fait, mais quand je remplace (ligne 27, celle qui m'interesse):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("myBtn").dispatchEvent(evt);
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName("testname").dispatchEvent(evt);
    celà ne fonctionne pas, pourquoi ?

  4. #4
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 740
    Points
    4 740
    Par défaut
    faudrait d'abord écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName("testname")[0].dispatchEvent(evt);
    sinon on peut envoyer un event sur un input, et même le recupérer avec "listener d'event" mais ce n'est pas pour autant que le mécanisme de l'envoi (ici ton "click" ) sera traité comme tel par le navigateur.

    C'est un mécanisme de sécurité ( il doit y avoir une trace quelque part dans les directives du W3C).

    sinon ,un script pourrait très bien préremplir un formulaire d'achat et d'envoyer une commande à l'insu de n'importe quel internaute.
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    bordeaux
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    Je comprends, merci, donc si je comprends bien il n'y a pas d'autres solutions que mon script pour auto click?

  6. #6
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 740
    Points
    4 740
    Par défaut
    Si, c'est un mécanisme natif sur les formulaires, mais comme tu n'utilises pas de formulaire alors ce mécanisme n'est pas actif.

    faut aussi inhiber l'envoi du formulaire sinon la page se recharge automatiquement, et cherche à envoyer ses données

    PS; Oui tout ce qui touche aux objets de formulaires (les seuls a avoir un attribut name) ont un comportement un peu irrationnels.

    ça se code de cette manière:
    Code HTML : 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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
      <meta charset="UTF-8">
      <title>Prefill & autoclick</title>
    </head>
    <body>
     
      <h3>Prefill & autoclick</h3>
     
      <form id="my-form">
        <input type="text" name="myInput">
      </form>
     
    <script>
      const myForm = document.getElementById('my-form')
        ;
      // "Prefill"
      myForm.myInput.value = 'toto'    // on peut se servir du name directement en se référant a son formulaire parent
        ;
      // aussi déclenché quand on tape sur la touche Entée du clavier
      myForm.onsubmit=e=>   
        {
        e.preventDefault()  // empeche l'envoi réel du formulaire
        alert( `valeur entrée = ${myForm.myInput.value}`)
        }
    </script>
    </body>
    </html>
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    bordeaux
    Inscrit en
    Avril 2017
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    Merci beaucoup 👍🏻👍🏻

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

Discussions similaires

  1. Numérotation des sections qui commence par 0 au lieu de 1
    Par Lumina- dans le forum Mise en forme
    Réponses: 3
    Dernier message: 12/05/2008, 10h24
  2. Passage d'un identifiant par un lien
    Par oceane751 dans le forum Langage
    Réponses: 7
    Dernier message: 20/02/2008, 15h46
  3. [IE] par défaut au lieu de Mozilla ?
    Par ouldfella dans le forum IE
    Réponses: 2
    Dernier message: 13/03/2007, 11h14
  4. Accéder au second <td> lorsque le le premier <td> est identifié par id
    Par Invité dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 17/05/2006, 20h58
  5. Placer une image à un endroit identifié par ses coordonnées
    Par sempire dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 16/11/2005, 22h19

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