Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 18-01-2010 22:50:15

aure
Membre
Lieu: Chimay, Belgique
Date d'inscription: 05-05-2009
Messages: 30
Site web

[Zend_Dojo] Retarder liste auto-complétion

Bonjour à tous,

j'utilise Zend_Dojo essentiellement pour l'autocomplétion. Ca fonctionnait assez bien jusqu'à maintenant, cependant j'aimerais que l'autocomplétion commence à partir de 4 caractères entrés dans le champs (pour éviter d'avoir trop de données affichées et de nuire à l'ergonomie...)

Je n'ai rien trouvé à ce sujet et j'espérais que certains d'entre vous auraient une solution à cela ?

Autre chose concernant l'autocomplétion, est-il possible que la recherche s'effectue sur l'entièreté des valeurs et non plus sur le début ?

Merci d'avance,

auré smile

Hors ligne

 

#2 19-01-2010 01:45:51

Grummfy
Membre
Lieu: Belgique
Date d'inscription: 01-08-2007
Messages: 232
Site web

Re: [Zend_Dojo] Retarder liste auto-complétion

Pour la première partie il te suffit de compte la longueur de la chaine saisie dojo.byId('machaine').value (regarde un peu de ce coté http://www.z-f.fr/forum/viewtopic.php?pid=24652#p24652 )
et ensuite à partir de 4 faire de l'autocompletion...


Engagez-moi! : Cherche job en Belgique autour de Namur (1 heure de route autour)
blog - ZF Planet

Hors ligne

 

#3 19-01-2010 13:49:28

aure
Membre
Lieu: Chimay, Belgique
Date d'inscription: 05-05-2009
Messages: 30
Site web

Re: [Zend_Dojo] Retarder liste auto-complétion

Merci Grummfy ! smile

Avec ce que tu me proposes, je pense donc désactiver l'autocomplétion dés le départ et une fois que j'atteins 4 caractères entrés, j'active l'autocomplétion. D'autre part, quand la longueur du contenu de mon champs est inférieur à 4, je désactive l'autocomplétion.

Je n'ai pas de problème pour distinguer la longueur du contenu du champs, cependant je n'arrive pas à désactiver l'autocomplétion. J'ai essayé ceci (d'après ce que j'ai compris...) mais ça ne fonctionne pas

Code:

dijit.byId('searchField').attr('autocomplete', false);

Merci!

auré wink

Hors ligne

 

#4 19-01-2010 14:08:24

Grummfy
Membre
Lieu: Belgique
Date d'inscription: 01-08-2007
Messages: 232
Site web

Re: [Zend_Dojo] Retarder liste auto-complétion

J'en sais pas plus, personnellement ce que je faisait, tant que il y avait moins de 4 char l'url renvoyait un ensemble vide, une fois 4 caractère dépassé je passait sur la bonne url ....

cf le projet du groupe B2 du labo de l'iesn avec le code postal des membres ...

Dernière modification par Grummfy (19-01-2010 14:09:34)


Engagez-moi! : Cherche job en Belgique autour de Namur (1 heure de route autour)
blog - ZF Planet

Hors ligne

 

#5 19-01-2010 14:44:02

aure
Membre
Lieu: Chimay, Belgique
Date d'inscription: 05-05-2009
Messages: 30
Site web

Re: [Zend_Dojo] Retarder liste auto-complétion

Oki, mais il doit certainement y avoir moyen de désactiver sur l'objet Javascript, je vais éplucher la doc Dojo.

Merci!

auré wink

Hors ligne

 

#6 19-01-2010 21:19:51

Grummfy
Membre
Lieu: Belgique
Date d'inscription: 01-08-2007
Messages: 232
Site web

Re: [Zend_Dojo] Retarder liste auto-complétion

http://docs.dojocampus.org/dojo/data/ItemFileReadStore

sinon je pense que mettre searchAttr a vide devrait désactivé l'autocompletion, car plus de paramètre de recherche ....


Engagez-moi! : Cherche job en Belgique autour de Namur (1 heure de route autour)
blog - ZF Planet

Hors ligne

 

#7 20-01-2010 11:52:58

aure
Membre
Lieu: Chimay, Belgique
Date d'inscription: 05-05-2009
Messages: 30
Site web

Re: [Zend_Dojo] Retarder liste auto-complétion

Salut Grummfy,

c'est effectivement ce que j'ai finalement fait hier. J'avais essayé, dans un premier temps, de travailler avec l'objet ItemFileReadStore créé mais ce n'était pas suffisamment rapide.

J'ai ensuite bossé en modifiant l'attribut de recherche, ce n'est pas aussi rapide que je le voudrais mais ça fonctionne... Le nombre de valeur à filtrer est assez important (+- 25000 entrées) et ralenti logiquement le filtrage hmm, je vais voir s'il y a d'autres possibilités pour gérer un très grand nombre de données...

Code:

<?php
    $this->dojo()->requireModule('dojo._base.connect');
    $this->dojo()->addJavascript("
            function myAutocomplete()
            {
                if(dojo.byId('searchPlans').value.length > 3 && canSearch == false)
                {
                    //start autocomplete
                    dijit.byId('searchPlans').attr('searchAttr', 'my_field'); //'my_field' champs sur lequel s'effectue la recherche
                    canSearch = true;
                    console.info('OK - ' + canSearch);
                }
                else if(dojo.byId('searchPlans').value.length == 3 && canSearch == true)
                {
                    //stop autocomplete
                    dijit.byId('searchPlans').attr('searchAttr', null);
                    canSearch = false;
                    console.info('KO - ' + canSearch);
                }
            }
            ");
    $this->dojo()->addOnLoad("
            function()
            {
                dijit.byId('searchPlans').attr('searchAttr', null);
                canSearch = false;
                dijit.byId('searchPlans').autoComplete = false;
                dojo.connect(dojo.byId('searchPlans'), 'onkeyup', myAutocomplete);
            }
            ");

?>

Concernant mon second problème pour effectuer la recherche sur l'entièreté des valeurs et non plus uniquement le début des chaines, j'ai mis le paramètre 'queryExpr' à la valeur '*${0}*'

Voilà,

auré wink

Dernière modification par aure (20-01-2010 11:54:06)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages