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 :

[AJAX] Auto completion temporisée


Sujet :

JavaScript

  1. #1
    Membre Expert
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 419
    Par défaut [AJAX] Auto completion temporisée
    Bonjour

    Je suis en train de mettre en place un système d'auto-completion sur les pages HTML de façon a ne pas afficher tout le temps tous les utilisateurs dans un champs select(on a un nouveau client qui avoisine les 25 000 salariés, ça le ferait pas...))

    Pour l'instant, un système existe qui a changement envoie une requête au serveur pour afficher la lite réduite.

    Le soucis, c'est que chaque fois que je touche à la cellule, j'envoie une requête, quand j'écris Dupont, j'envoie donc 6 requêtes.

    L'idée serait que la personne qui écrirait "dup" d'un seul coup n'envoie une requête qu'après avoir arrêté de taper.

    Ce que je pense qu'il faut mettre en place :
    A chaque changements,
    - on met dans une variable JS la date a partir de laquelle on doit envoyer la requête (date +1 sec par exemple) -> Ajout ou update de la valeur.
    - Après 1 seconde(set time out) on vérifie si la date est bien passée(si aucune autre lettre n'a été tapée) et on lance la requête si tel est le cas.

    Le problème, c'est que je ne vois pas trop par ou commencer, ni si c'est vraiment efficace. De plus, ca me parait bizarre que ce genre de système ne soit pas générique pour alléger les serveurs.

    Quelqu'un pour me donner une piste ?

    Pierre

  2. #2
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    Avec YUI (yahoo user interface), il y a une fonction définie :

    yahooAutoComp.minQueryLength = 3;

    Tant que l'utilisateur n'a pas tapé au moins 3 caractères, la requête ne se déclenche pas.

    N'y-a-t-il pas un moyen de faire avec une variable $i et une incrémentation ?

    M'enfin je dis ça je ne conseille pas forcément YUI x) ...

  3. #3
    Membre Expert
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 419
    Par défaut
    J'ai bien imaginé de mettre une limite de nombre de caractères.

    Il ne me parais pas trop difficile de faire ca. le problème, c'est que je pense que la limite de temps serait plus intuitive pour l'utilisateur.

    Il est malgré tout possible que j'utilise les deux idées à la fois.

    Avoir au moins n caractères ET avoir arrêté d'écrire depuis m secondes.

  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 pmithrandir Voir le message
    Avoir au moins n caractères ET avoir arrêté d'écrire depuis m secondes.
    Attention au N caractères : perso, j'ai été obligé de désactiver ce contrôle. On trouve relativement fréquemment des noms de 2 voire 1 (en Asie surtout) caractère ...

    Un setInterval de 1 à 2 secondes poserait moins de problème ....

    A+

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Attention au N caractères : perso, j'ai été obligé de désactiver ce contrôle. On trouve relativement fréquemment des noms de 2 voire 1 (en Asie surtout) caractère ...

    Un setInterval de 1 à 2 secondes poserait moins de problème ....

    A+
    Bonjour,

    L'idée du setInterval me parait très bonne. Je pense en l'occurrence à un setInterval qui lancerait une fonction de vérification du champs autocomplété. Si la valeur du champs est différente de la valeur reçu en paramètre alors elle ne fait rien sinon elle lance la requête Ajax.

    Cela me semble facilement réalisable.

Discussions similaires

  1. [AJAX] Java Ajax auto completion
    Par g25452 dans le forum AJAX
    Réponses: 1
    Dernier message: 16/09/2009, 12h23
  2. auto completion
    Par Blo0d4x3 dans le forum Composants
    Réponses: 14
    Dernier message: 03/06/2009, 17h08
  3. [AJAX] Auto completion - plusieurs champs dans un formulaire
    Par etco1 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/09/2007, 17h36
  4. Auto Completion avec un JComboBox
    Par jeffciara dans le forum AWT/Swing
    Réponses: 17
    Dernier message: 19/10/2006, 08h37
  5. auto completion sous crimson
    Par Australia dans le forum ASP
    Réponses: 4
    Dernier message: 13/07/2006, 12h50

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