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

AJAX Discussion :

[AJAX] Autocomplétion et validation formulaire


Sujet :

AJAX

Vue hybride

Benzz [AJAX] Autocomplétion et... 21/06/2009, 21h30
E.Bzz Bonjour,je comprends bien que... 22/06/2009, 15h12
Benzz Je te remercie de ta réponse,... 22/06/2009, 15h44
E.Bzz Si si :mouarf: La touche à... 22/06/2009, 16h07
Benzz Arf désolé :lol: Merci... 22/06/2009, 16h14
emmanuel.remy Donc son tutoriel, Denis gère... 23/06/2009, 00h36
Benzz La fonction stopEnter permet... 23/06/2009, 17h25
E.Bzz Sauf quand tu mets ça dans un... 23/06/2009, 17h33
emmanuel.remy Dans ce cas: ... 24/06/2009, 11h19
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 75
    Par défaut [AJAX] Autocomplétion et validation formulaire
    Bonjour,

    J'utilise le script d'autocomplétion de Denis Cabasson pour sélectionner des villes, ce qui fonctionne à merveille. Je rencontre toutefois un problème assez ennuyeux.

    Lorsque l'on sélectionne une valeur dans la liste de choix et qu'on tape la touche [Entrée], la valeur est certes placée dans le champs prévu à cet effet, mais le formulaire est aussi validé (submit).

    Le problème, c'est que les utilisateurs de se formulaire doivent remplir plusieurs champs avant de valider le formulaire... Donc ma question est la suivante : comment éviter que le formulaire ne soit validé quand on tape sur la touche [Entrée] pour sélectionner une valeur de la liste de choix ?

    Je vous remercie par avance de votre aide et je vous précise que j'ai déjà lu la discussion suivante sur le même sujet, mais dans laquelle aucune solution efficace n'a semble-t-il été apportée :
    http://www.developpez.net/forums/d15...nt-onkeypress/

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par Benzz Voir le message
    comment éviter que le formulaire ne soit validé quand on tape sur la touche [Entrée] pour sélectionner une valeur de la liste de choix ?
    je comprends bien que tu essayes d'adapter ta page en fonction de tes utilisateurs.
    Cependant, dans ce cas, je ne suis pas sûr que ça soit la meilleure solution.
    Le validation par "Enter" du formulaire est le fonctionnement classique sur internet.
    Il serait donc, à mon avis, largement préférable d'être un peu didactique envers tes utilisateurs : profites-en pour les sensibiliser au fonctionnement d'internet

    Si tu leur masques le problème par un script adapté pile-poil à leur fonctionnement actuel, ils auront toujours ce problème ailleurs (ex : validation à tort d'une commande sur un site marchand etc.).

    Au lieu de ça, tu peux, par exemple adapter le message d'erreur (celui que tu affiches certainement si le formulaire est validé sans que tous les champs soient remplis). Il suffit d'ajouter à la fin un petit "RAPPEL : utiliser la touche TAB pour vous déplacer d'un champ à l'autre et la touche ENTER uniquement pour valider l'écran."
    Il feront l'erreur encore 2 ou 3 fois chacun (sans conséquence fâcheuse) et puis ils auront compris

    EDIT : tout ça étant dit, le problème n'est pas lié à la présence d'un traitement Ajax dans la page

    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 75
    Par défaut
    Je te remercie de ta réponse, mais je ne suis pas certains que nous nous comprenions tout à fait. Je souhaite effectivement adapter ma page aux visiteurs, pour une en améliorer l'ergonomie, mais uniquement sur les champs à autocomplétion.

    Mon formulaire contient plusieurs champs à renseigner obligatoirement (saisie classique comme le nom par exemple), mais contient aussi deux champs à saisie autocomplétée via AJAX.

    Je souhaite bien évidemment que l'utilisateur puisse valider son formulaire en tapant sur la touche [Entrée].

    Le problème qui se pose avec le script de Denis Cabasson, c'est que lorsque la liste de choix AJAX s'affiche, si on sélectionne une valeur avec la souris, tout est ok. La valeur s'affiche dans le champs et on peut passer à la suite de la saisie. Par contre, si on fait défiler les valeurs avec les flèches directionnelles du clavier et qu'on sélectionne une valeur avec la touche [Entrée], la valeur s'affiche correctement dans le champ, mais aussitôt, le formulaire est validé, ce qui provoque bien entendu l'affichage d'un message indiquant à l'utilisateur qu'il doit encore compléter certains champs.

    Etant donné que les évènements clavier sont récupérés et analysés quand on on se trouve dans le champs à autocomplétion, je souhaiterais simplement trouver l'endroit du javascript qui permettrait, quand on appuie sur la touche [Entrée] de simplement afficher la valeur correspondante dans le champ, mais sans que cela valide le formulaire.

    En sommes, je souhaite que le comportement de la touche [Entrée] soit normal quand on se trouve sur un champ normal, mais ne serve qu'à sélectionner une valeur quand on se trouve sur un champ autocomplété.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Benzz Voir le message
    mais je ne suis pas certains que nous nous comprenions tout à fait.
    Si si
    La touche à utiliser en standard pour sélectionner la ligne d'une liste est la touche TABULATION (après l'avoir sélectionner avec les flèches).

    Si tu persévères néanmoins, tu as déjà la solution dans la discussion en lien (il y a visiblement uniquement un mauvais emploi de cancelbubble / stopPropagation qui bloque l'envoi du form => une petite recherche sur le sujet devrait le régler)

    A+

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 75
    Par défaut
    Arf désolé

    Merci pour ta réponse, je vais donc chercher de ce coté là.

    Si la touche tabulation permet officiellement de sélectionner une valeur dans une liste, j'ai l'impression que ce n'est pas le réflex des utilisateurs (certainement ignorant). Par conséquent, je vais peut être quand même adapter la page aux utilisateurs, car je pense que (dans une certaine mesure toutefois) c'est à la page de s'adapter à l'utilisateur et non l'inverse.

    Si je trouve la solution à mon "problème", j'essaierai de penser à revenir la poster clairement ici. Merci encore à toi.

  6. #6
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Donc son tutoriel, Denis gère les keyUp, ... Du coup, as tu essayé basiquement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function stopEnter(evt) {
      var evt = (evt) ? evt : ((event) ? event : null);
      var cible = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
      //on annule la touche entrée uniquement en cas de validation sur un input type=text
      if ((evt.keyCode == 13) && (cible.type=="text"))  {return false;}
    }
     
    document.onkeypress = stopEnter;
    Cela le fait pour toutes les boites de texte du document, mais peut aussi s'appliquer à une seule.

    ERE

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 75
    Par défaut
    La fonction stopEnter permet effectivement de supprimer l'effet de la touche [Entrée], mais le problème, c'est que, du coup, elle ne permet plus de sélectionner le choix et de faire disparaitre la liste.

    Merci quand même pour cette proposition.

    Je ne comprend pas bien le complément de Denis dans l'autre discussion, par conséquent, je vais peut être laisser le script en l'état et indiquer sur ma page d'utiliser la touche tabulation (le problème, c'est que les gens ne lisent les instructions qu'en travers).

    Merci encore de votre aide.

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Benzz Voir le message
    (le problème, c'est que les gens ne lisent les instructions qu'en travers).
    Sauf quand tu mets ça dans un message d'erreur bloquant qui les oblige à recommencer (comme suggéré) : tu verras, ils apprendront vite

    A+

  9. #9
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    La fonction stopEnter permet effectivement de supprimer l'effet de la touche [Entrée], mais le problème, c'est que, du coup, elle ne permet plus de sélectionner le choix et de faire disparaitre la liste.
    Dans ce cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taZoneDeSaisie.onkeypress = stopEnter;
    Non ?

    ERE

Discussions similaires

  1. [AJAX] Validation formulaire ajax
    Par zekabyle dans le forum AJAX
    Réponses: 1
    Dernier message: 18/02/2011, 17h23
  2. Réponses: 18
    Dernier message: 17/03/2009, 17h25
  3. [AJAX] Validation Formulaire par ajax
    Par freak999 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/02/2009, 22h49
  4. [AJAX] Valider formulaire avec touche Entrer
    Par sff dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/09/2008, 13h36
  5. Validation formulaire Ajax et Pop-up
    Par PiXeL' dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 06/05/2008, 10h42

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