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

EDI, CMS, Outils, Scripts et API PHP Discussion :

JavaScript - Bouton annuler


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Par défaut JavaScript - Bouton annuler
    Bonjour à tous,

    Dans formulaire que j'ai développé, j'ai deux boutons - Valider et Annuler.
    Si le bouton Valider fonctionne parfaitement, celui pour annuler me pose plus de souci.

    Au clic sur ce bouton, une alerte doit s'ouvrir. Si l'utilisateur confirme, il doit être redirigé sur la page "liste_civ".
    Je parviens à rediriger l'utilisateur au clic, ou à afficher une alerte, mais pas les deux en même temps. Je me suis tourné vers JavaScript pour résoudre mon problème mais sans succès.

    Voici mon code Drupal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    drupal_add_js(drupal_get_path('module', 'form_civ') . '/retour_page.js');
     
    $form['retour'] = array(
            '#type' => 'button',
            '#value' => t('Annuler'),
            '#id' => 'retour'
    );
    Voici mon code JS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    document.addEventListener("click", retourPage,true);
     
    function retourPage(e){
        if (e.button===0){
            if (confirm("Etes-vous sûr de vouloir annuler ? ")){
                document.location.href="liste_civ";
            }
        }
    }
    Le code fonctionne, à un détail près : l'action se déclenche à chaque fois que l'utilisateur clique sur la page, que ce soit sur le bouton, ou dans la page.
    Je ne parviens pas à déclencher cette action uniquement sur le clic du bouton !

    Est-ce que l'un d'entre vous peut me donner de nouvelles pistes de recherches ?
    Merci d'avance

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Ton event listener écoute tous les clics sur l'intégralité du document. De plus, ce n'est pas une bonne idée d'intercepter tous les évènements du document comme ça, car ça augmente l'utilisation des ressources du navigateur. Mieux vaut toujours préciser la cible que tu souhaites écouter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var btn = document.getElementById("retour");
    btn.addEventListener("click", retourPage);
     
    function retourPage() {
        if (confirm("Etes-vous sûr de vouloir annuler ? ")){
                document.location.href="liste_civ";
            }
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Par défaut
    Merci Tsilefy pour ta réponse et pour ta rapidité.

    Je viens de tester ton code, et malheureusement celui-ci ne fonctionne pas chez moi. L'alerte s'ouvre mais ne redirige pas l'utilisateur s'il confirme.

    J'ai tenté de remplacer le "click" par "mousedown" dans l'EventListener, et avec ce code, le bouton réagit comme je le souhaite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var btn = document.getElementById("retour");
    btn.addEventListener("mousedown", retourPage);
     
    function retourPage() {
        if (confirm("Etes-vous sûr de vouloir annuler ? ")){
                document.location.href="liste_civ";
            }
    }
    Du coup, mon problèmer est résolu, mais j'aimerai comprendre pourquoi le "click" ne fonctionne pas...
    Car ton code a été testé sur une page HTML/PHP simple, et le bouton réalise l'action que l'on attend de lui.
    Est-ce que le problème vient de Drupal, qui gère le clic d'un bouton différemment ?

    En tout cas, merci encore pour ta réponse.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Bizarre. Je dirais que le souci vient plus de ton navigateur que drupal. C'est pour ça qu'on utilise jQuery, qui uniformise les comportements de tous les navigateur, au lieu d'écrire un code adapté pour chaque navigateur qui existe.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Par défaut
    En fait, j'ai également testé avec une fonction en JQuery, mais celle-ci me donnait le même résultat. Impossible à revenir en arrière avec "click" mais OK avec "mousedown".
    Et le résultat était le même sous différents navigateurs, que j'utilise une fonction JS ou JQuery.
    C'est assez déroutant, mais le code fonctionne !

    En tout cas merci pour tes réponses.

Discussions similaires

  1. [VBA inputbox] le bouton annuler ne marche pas
    Par herendel dans le forum Access
    Réponses: 2
    Dernier message: 15/05/2006, 12h42
  2. [js]methode "alert", bouton annuler par defaut
    Par jeromejanson dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/09/2005, 11h35
  3. Javascript bouton submit
    Par lilou0210 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/11/2004, 11h40
  4. [VB.NET] Pb avec le bouton Annuler d'1 barre de progression
    Par dada1982 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/06/2004, 09h56
  5. Réponses: 5
    Dernier message: 04/04/2003, 15h02

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