2010-12-11 3 views
4

Comment puis-je coder une fonction d'auto-complétion simple avec ExtJs? Si le champ a l'adresse et ils commencent à taper st il devrait devenir rue, etcChamp de texte complet avec ExtJs

+3

Je vous écris ceci comme un commentaire plutôt qu'une réponse depuis Je n'ai pas le temps de vous donner du code testé, juste un croquis. Il semble que cela peut être fait avec ComboBox avec les propriétés de configuration hideTrigger: true (pour qu'il ressemble à un TextField normal) et typeAhead: true (qui fournit un mécanisme pour les suggestions), et avec un écouteur pour l'événement keyup, qui peut alors analyser la chaîne (getValue()) et voir si le dernier mot correspond à un dictionnaire donné et remplir le ComboBox avec n'importe quelle suggestion en conséquence. –

+0

@fastcodejava pouvez-vous poster votre code complété? – freestyle

Répondre

14

Comme le suggère Mitch dans son commentaire, vous pouvez utiliser Ext.form.Combobox, correctement configuré, pour ce faire. Vous n'aurez pas besoin de lier quoi que ce soit à l'événement keyup, car Combobox le gérera pour vous.

Voici le début d'une configuration qui devrait fonctionner. Vous devrez fournir un Ext.data.Store approprié (ou une sous-classe de celui-ci), ainsi que quelques autres valeurs de configuration (displayField, valueField, queryParam, etc.). Tous les trucs nécessaires est assez bien documenté dans l'API docs)

MyTypeahead = new Ext.form.ComboBox({ 
    triggerAction:'all', 
    typeAhead:true, 
    mode:'remote', 
    minChars:2, 
    forceSelection:true, 
    hideTrigger:true 
}); 
+1

J'étais sous l'impression que l'entrée comme "123 main st" devrait déclencher la suggestion "123 rue principale" où "rue" est dans le dictionnaire mais "123 rue principale" ne l'est pas; à ma connaissance, il n'y a pas de mécanisme automatique dans ComboBox pour cela. Bien que je n'ai jamais utilisé queryParam auparavant, je peux me tromper. Quoi qu'il en soit, j'ai donné +1. –

+1

Ah, je ne l'ai pas lu de cette façon - ma réponse est juste un simple champ de typé de sélection forcée. "123 rue principale" suggérerait "123 rue principale" si "123 rue principale" existait comme une option. queryParam nomme simplement la variable de requête utilisée pour effectuer la recherche à distance. – timdev

+0

Mitch a raison sur ce que je cherchais. J'ai encore donné +1 pour l'effort et j'ai accepté la réponse. – fastcodejava

0

ExtJS: Comment faire combobox exécuter « Contient »/comme la recherche voir this