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 :

Méthode addEventListener sur INPUT et BUTTON


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Reconverti Dev Web
    Inscrit en
    Septembre 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Reconverti Dev Web
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2019
    Messages : 88
    Par défaut Méthode addEventListener sur INPUT et BUTTON
    Bonjour à tous,

    Je n'ai pas trouvé de reponses convaiquante au sujet des boutons/input et la methode addEventListener.

    Est-il possible de valider un input via un bouton sans passer forcement par un formulaire?

    Je m'explique:
    Je veux valider une entrée d'un utilisateur via un bouton, et à son déclenchement lancer une fonction JS qui testera la valeur.

    Puis pouvoir de nouveau entrer une valeur et ainsi de suite. C'est à dire que le champs redevienne vierge et qu'on puisse de nouveau entrer une valeur et la tester via le bouton + addListener.

    Tous les cours trouvés sur le net son un peu vague à ce sujet, soit on tombe sur des formulaires avec submit, soit la fonction addListener ne marche pas avec n'importe quelle type de bouton ect...D'ailleurs qu'elle est la syntaxe exacte à utiliser avec cette methode?

    Cdt.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par nadfri2019 Voir le message
    ...Tous les cours trouvés sur le net son un peu vague...
    ...qu'elle est la syntaxe exacte à utiliser avec cette methode?
    Tu es sûr d'avoir cherché ?


  3. #3
    Membre confirmé
    Homme Profil pro
    Reconverti Dev Web
    Inscrit en
    Septembre 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Reconverti Dev Web
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2019
    Messages : 88
    Par défaut
    Justement j'ai lu ce lien plusieurs fois, mais je trouve que c'est pas tres clair.

    Par exemple, comment expliquer que ce simple code ne marche pas:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button id"bouton">OK</button>

    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    let bouton = getElementById("bouton1");
    bouton.addEventListener("click", alert("Bonjour"));

    Pour le faire marcher, je dois passer par une fonction anonyme, je trouve cela étrange.
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    bouton.addEventListener("click", function(){alert("Bonjour")});

    Il n'est spécifié nul part une syntaxe exacte à appliquer, mise à part qu'il faut retirer les parenthèses du nom de la fonction.

  4. #4
    Invité
    Invité(e)
    Par défaut
    1- Parce qu'on doit écrire : document.getElementById.
    ET id="bouton".

    2- Il ne suffit pas de "lire", encore moins de "parcourir" les documents.
    Ils contiennent aussi des EXEMPLES : TESTE-LES.

    CONSEIL : mets au début du script JS
    Et regarde dans la "Console" de ton navigateur : touche "F12" -> "Console"

    3- Quant à la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let bouton = document.getElementById("bouton");
    bouton.addEventListener("click", function(){ alert("Bonjour") });
    On peut aussi écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bouton.addEventListener("click", e => alert("Bonjour") );
    Dernière modification par Invité ; 07/10/2019 à 17h58.

  5. #5
    Membre confirmé
    Homme Profil pro
    Reconverti Dev Web
    Inscrit en
    Septembre 2019
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Reconverti Dev Web
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2019
    Messages : 88
    Par défaut
    Désolé pour le manque du "document." j'ai écris un peu vite.

    En fait si je lance le code, j'ai mon alert('bonjour') qui s'affiche avant même de cliquer sur le bouton.
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <button id="bouton1">OK</button>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let bouton = document.getElementById("bouton1");
    bouton.addEventListener("click",alert("bonjour"));
    Quel est la fonction de "use strict" exactement? je dois le mettre au début du code dans le fichier js?

    Cdt.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par nadfri2019 Voir le message
    ...
    Pour le faire marcher, je dois passer par une fonction anonyme, je trouve cela étrange.
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    bouton.addEventListener("click", function(){alert("Bonjour")});

    Il n'est spécifié nul part une syntaxe exacte à appliquer, mise à part qu'il faut retirer les parenthèses du nom de la fonction.
    Citation Envoyé par nadfri2019 Voir le message
    En fait si je lance le code, j'ai mon alert('bonjour') qui s'affiche avant même de cliquer sur le bouton.
    Cela n'est pas précisé car cela fait partie des règles générales...

    Quand tu mets les parenthèses cela signifie que tu demandes l’exécution de la fonction et sans les parenthèses (c'est-à-dire juste le nom de la fonction) il s'agit d'une référence.

    En paramètre de addEventListener c'est le nom de la fonction que nous devons mettre car on a besoin de la référence à cette fonction pour pouvoir l’exécuter seulement quand l’évènement est déclenché.

    Et quand tu mets en paramètre une fonction avec les parenthèses alors celle-ci sera exécutée et ce n'est donc pas la référence à cette fonction que tu passes mais la valeur retournée par cette fonction aprés exécution si elle retourne quelque chose sinon ce sera undefined...

    Quand tu fais cela :

    bouton.addEventListener("click", alert("Bonjour"));.

    c'est comme si tu faisais cela :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var res = alert("Bonjour");
    bouton.addEventListener("click", res);

    Et là tu vois bien que res n'est pas une référence à une fonction donc cela ne peut pas fonctionner...

    Et là tu vois aussi pourquoi, comme tu l'as constaté, que l'alerte s’affiche sans que tu ais cliqué sur le bouton, c'est parce qu'elle a été exécutée à la ligne : var res = alert("Bonjour");

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

Discussions similaires

  1. activer input text bouton radio
    Par ilood dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/05/2007, 17h43
  2. Demande informations sur la transparence
    Par Claude URBAN dans le forum Windows
    Réponses: 2
    Dernier message: 04/01/2007, 19h11
  3. Demande information sur "TansparentColorValue.."
    Par Claude URBAN dans le forum C++Builder
    Réponses: 12
    Dernier message: 19/12/2006, 16h59
  4. Demande Information sur "TransparentColorValue"
    Par Claude URBAN dans le forum Delphi
    Réponses: 2
    Dernier message: 14/12/2006, 14h05
  5. Demande information sur les librairie.
    Par argon dans le forum C
    Réponses: 2
    Dernier message: 29/03/2006, 16h22

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