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 :

Touche Entrée exécute le onLoad


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Touche Entrée exécute le onLoad
    Bonsoir à tous.

    Je suis depuis ce midi sur un TP DOM qui est quasiment terminé.
    Je rencontre un problème bien gênant cependant.

    La page contient un formulaire de recherche qui tire les résultats d'un fichier XML. Pour en venir au fait, lorsque j'appuie sur la touche Entrée, la page se recharge / le onLoad est de nouveau exécuté.
    J'ai essayé de mettre un eventCatcher sur la touche Entrée, celui-ci fonctionne bien puisqu'il valide la recherche, mais la page est également rechargée !

    Voici les morceaux intéressants

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <BODY onLoad="mouvement(0); loadXML();" style="background-color:#DDDDDD;">
    		<XML ID="feuilleDom" SRC="inventaire.xml"></XML>
    		<div id="bandereau"></div>
    		<form name="formulaire"><br/>
    		Recherche sur le terme :	<input type='text' id="champ"/>
                    </form>
    Je ne sais pas s'il y a besoin de plus, mais de prime abord je ne vois vraiment pas quoi d'autre dans mon code pourrait influencer ça.

    Merci pour toute piste !

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par Melooo Voir le message
    Je ne sais pas s'il y a besoin de plus, mais de prime abord je ne vois vraiment pas quoi d'autre dans mon code pourrait influencer ça.

    Merci pour toute piste !
    Le formulaire n'a pas de propriete action ni l'input de propriete onclick ?
    Si c'est un JS externe qui applique les gestionnaires d'événement à tes éléments (bonne pratique, ça ), c'est là que ça se passe

    Montre-nous le reste de ton JS, car il va falloir placer un
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    return false;
    à la fin du gestionnaire d'événement concerné.

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Sisisi j'ai un onClick biensûr, qui récupère le contenu de "champ". Le click sur le bouton submit fonctionne très bien, c'est juste la touche entrée !

    Le gestionnaire d'évènements que j'utilise, je l'ai tiré de ce que j'ai trouvé rapidement sur le net :

    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
     
    document.onkeyup = KeyCheck;
     
    function KeyCheck(e)
     
    			{
    			   var KeyID = (window.event) ? event.keyCode : e.keyCode;
     
    			   switch(KeyID)
    			   {
    				  case 13:
    				  rechercher(champ.value);
    				  break;
    			   }
     
    			}
    Il fonctionne bien dans le sens où l'appui sur la touche Entrée me semble correctement lancer la recherche, mais j'ai toujours un rechargement de la page / onLoad.

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par Melooo Voir le message
    me semble
    Montre nous un peu cette fonction rechercher()

  5. #5
    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
    Lorsque tu es dans un champ de formulaire, l'action par défaut de la touche entrée est de soumettre le formulaire.
    Donc il faut annihiler cette action par défaut. Pour cela, tu peux utiliser la propriété cancelBubble / la méthode stopPropagation() de l'objet event.
    Au pire, retourner un équivalent de false à la fonction anonyme appelée par le gestionnaire d'événement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    document.onkeyup = function(){return KeyCheck();}
    function KeyCheck(e){
        var KeyID = (window.event) ? event.keyCode : e.keyCode;
        switch(KeyID){
            case 13:
                rechercher(champ.value);
                return false;
        }
    }
    PS : T'as vu, en évitant les indentations excessives, le code est plus facilement lisible...

  6. #6
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci bien, je vais me renseigner sur ça tout de suite

Discussions similaires

  1. [WD15] Exécuter un code sur touche entrée d'une ligne de table
    Par kinansoag dans le forum WinDev
    Réponses: 3
    Dernier message: 15/10/2014, 21h04
  2. Exécution par appui sur la touche entrée
    Par Flodelarab dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/03/2013, 14h59
  3. [AC-2003] exécuter code sur évènement "touche entrée"
    Par willytito dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/10/2011, 17h55
  4. Exécuter un bouton par la touche "Entrée"
    Par christophe31 dans le forum VBA Access
    Réponses: 10
    Dernier message: 20/04/2010, 11h26
  5. touche entrée dans formulaire
    Par pram dans le forum XMLRAD
    Réponses: 8
    Dernier message: 15/04/2003, 09h13

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