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

Langage PHP Discussion :

Problème de validation (touche Enter) [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut Problème de validation (touche Enter)
    Bonjour à tous (très chouette site, par ailleurs),

    Je tente d'apprendre le PHP en suivant le très bon tutoriel proposé sur ce site :
    http://sylvie-vauthier.developpez.co...rand-debutant/

    Je me pose une question à propos de la validation d'un formulaire : dans quels cas l'utilisateur peut-il utiliser la touche "Enter" pour valider les données ? Je travaille pour l'instant sur le code suivant (tiré de http://sylvie-vauthier.developpez.co...e=syntaxe#LV-6) :
    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
    <html>
        <head><title>Nombres premiers</title></head>
        <body>
            <?php
            //intègre toutes les fonctions du fichier voisin
            include('fonctions.php');
            //présente le formulaire
            ?>
            <form method="POST" action="premiers.php">
                Entrez votre nombre (entre 1 et 10 000 SVP)<input type="text" name="num"/>
                <input type="submit" name="valider" value="OK"/>
            </form>
            <?php
            //si user a cliqué OK
            if(isset($_POST['valider'])){
                //récupère la valeur entrée
                $nombre=$_POST['num'];
                //convoque la fonction premiers
                $verdict=premiers($nombre);
                //affiche le verdict entier mis en forme.
                echo $nombre.' '.$verdict.'.';
            }
            ?>
        </body>
    </html>
    En gros, cela affiche un formulaire avec une zone de texte et un bouton de validation. Le but est de vérifier si le nombre entré dans la zone de texte est un nombre premier ou pas. Le code se trouve dans un fichier appelé "premiers.php" (donc la validation du formulaire renvoie bien vers le même fichier).

    Lorsque je teste ce script sur Firefox, je n'ai aucun problème : je peux valider mon nombre aussi bien en cliquant sur le bouton "OK" ou bien en tapant sur la touche "Enter" lorsque je suis dans le champ d'entrée.

    Par contre, si j'utilise Internet Explorer 9 ou bien le browser interne à Eclipse PHP (qui est probablement également aussi IE), la validation ne marche QUE si j'utilise le bouton "OK". Si j'utilise la touche "Enter" du clavier, le script se comporte comme si la variable $_POST['valider'] n'était jamais créée (j'ai testé en plaiçant des "echo" de test dans la condition "isset) et la page est réinitialisée.

    Est-il normal qu'un simple formulaire ait des comportements aussi différents dans Firefox que dans IE ? Est-il possible de forcer la validation par la touche "Enter" dans IE ?

    Ou bien est-ce un problème (bien caché) dans mon code ou encore un problème de configuration ?

    Voici les détails de mon installation :
    - Windows 7 64 bits
    - Eclipse PHP
    - Dernière version de WAMP 2.0i), donc avec PHP 5.3.0 Apache Apache 2.2.11)

    Merci d'avance pour votre aide !

  2. #2
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Je pense que ton souci vient du fait que le focus n'est pas placé au même endroit par défaut sous FF et sous IE. Si le focus est sur le bouton OK et que tu tapes 'entrée', c'est comme si tu avais cliqué sur le bouton OK. Si le focus est ailleurs, par exemple dans la barre d'adresse du navigateur, taper sur 'entrée' revient à (re)demander l'affichage de la page.

    Pour avoir un comportement plus homogène, tu peux placer le focus toi-même (avec du javascript).

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    Merci pour la réponse !

    Est-il possible que, même si je suis dans la zone de texte du form, le focus ne soit tout de même pas sur bouton "OK" du même form ? Si c'est le cas, alors c'est certainement mon problème, mais ce n'est pas fort intuitif (je pense que je n'avais même jamais rencontré le cas).

    Ce qui m'a également intrigué est que dans les exercices précédents du même tutoriel, le focus s'était chaque fois fait sur ce bouton "OK" lorsque je tapais du texte dans les champs du formulaire lié. C'est pourquoi je pensais qu'il y avait peut-être une erreur dans mon code (sans toutefois la trouver).

  4. #4
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Est-il possible que, même si je suis dans la zone de texte du form, le focus ne soit tout de même pas sur bouton "OK" du même form ?
    C'est possible en effet et si tu es en train de taper du texte, ma réponse au-dessus ne s'applique pas. En fait, si tu es en train d'utiliser un contrôle (par exemple un textearea pour saisir du texte), c'est normalement ce contrôle là qui a le focus. C'est donc lui qui va recevoir l'événement "onKeyPress" activé quand tu tapes 'entrée'.

    Pourquoi le bouton 'submit' est il automatiquement cliqué en ce cas ? Pour autant que je sache, il n'y a que deux façons de faire :
    - le plus sûr est de coder cela soi-même avec du javascript
    - sinon, on peut compter sur la propagation des événements dans l'arbre DOM de la page affichée (event bubling, spécification DOM2). Certains navigateurs essayent de respecter les normes DOM 2 (Firefox, Opera, Chrome sans doute), certains... essayent moins

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    Si je comprends bien, si je tape du texte et que je tape sur "Enter" (et qu'il n'y pas de JavaScript utilisé), c'est normalement le bouton de confirmation associé à la zone de texte qui va être activé. Sauf si j'utilise Internet Explorer, où là le comportement n'est pas prévisible. Correct ?

  6. #6
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Voilà (du moins dans les limites de mes connaissances sur le sujet - que je n'ai pas rafraîchies récemment...).

    Note que IE8 est plus conforme aux normes que IE7, qui est lui même plus conforme que IE6 (qui est une vraie horreur). Et IE9 est censé être plus respectueux que IE8. Donc tout cela peut aussi dépendre de la version de ton navigateur.

    La propagation correcte des événements dans l'arbre DOM est aussi dépendante de la validité du code HTML. Si le code est bancal, le navigateur construit son arbre comme il le peut pour pouvoir quand même afficher quelque chose et aucun comportement n'est garanti en ce cas.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/03/2009, 12h51
  2. Problème avec soumission par touche ENTER struts
    Par sandrine49 dans le forum Struts 1
    Réponses: 4
    Dernier message: 07/04/2008, 18h57
  3. Réponses: 3
    Dernier message: 18/02/2008, 12h56
  4. Réponses: 1
    Dernier message: 16/01/2007, 23h25
  5. Réponses: 4
    Dernier message: 30/08/2006, 18h15

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