Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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é
Hors ligne
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...
Hors ligne
Merci Grummfy !
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
dijit.byId('searchField').attr('autocomplete', false);
Merci!
auré
Hors ligne
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)
Hors ligne
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 ....
Hors ligne
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 , je vais voir s'il y a d'autres possibilités pour gérer un très grand nombre de données...
<?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é
Dernière modification par aure (20-01-2010 11:54:06)
Hors ligne
Pages: 1