jQuery UI Autocomplete widget de recherche de configuration
Je suis à la recherche dans l'aide de la jQuery UI autocomplete widget pour mettre en œuvre la recherche d'utilisateurs par nom ou prénom. Il ressemble par défaut, la saisie semi-automatique recherche les mots par la séquence de caractères peu importe son apparition dans un mot. Donc si vous avez des données telles que: javascript, asp, haskell
et que vous tapez dans 'as'
, vous obtiendrez tous les trois. J'aimerais qu'elle corresponde uniquement début du mot. Ainsi, dans l'exemple ci-dessus, vous obtenez uniquement les 'asp'
. Est-il un moyen de configurer le widget de saisie semi-automatique pour ce faire?
En fin de compte, il serait encore mieux de match en début de nom ou prénom comme il est dans Gmail.
Note: j'essaie de trouver un moyen de le faire à l'aide de jQuery UI widget en particulier. Depuis que je suis déjà à l'aide de jQuery UI dans mon projet, j'ai l'intention de rester avec elle et essayer de ne pas ajouter d'autres bibliothèques pour mon application web.
- acolyte a une solution pour gmail comme la recherche de stackoverflow.com/questions/2382497/...
Vous devez vous connecter pour publier un commentaire.
Dans l'INTERFACE utilisateur de jQuery v1.8rc3, le widget de saisie semi-automatique accepte un source option, qui peut être soit une chaîne de caractères, un tableau, ou une fonction de rappel. Si c'est une chaîne, la saisie semi-automatique est un GET sur l'URL pour obtenir des options/suggestions. Si un tableau, la saisie semi-automatique effectue une recherche, comme vous l'avez souligné, la présence de l'tapé caractères dans n'importe quelle position dans les termes de la matrice. La dernière variante est ce que vous voulez - la fonction de rappel.
De la saisie semi-automatique de la documentation:
Exemple de code:
Quelques points clés:
$.ui.autocomplete.escapeRegex(req.term);
Que échappe le terme de recherchede sorte que tout regex termes significatifs dans le texte tapé par l'utilisateur sont traitées comme du texte brut. Par exemple, le point (.) est significative pour les regex. J'ai appris de ce escapeRegex fonction par la lecture de la saisie semi-automatique du code source.
new Regexp()
. Il indique une regexp début avec ^ (accent Circonflexe), ce qui implique, il correspond seulement lorsque les caractères saisis apparaissent au début de ce terme dans le tableau, qui est ce que tu voulais. Il utilise également le "je" option qui implique un casse match.$.grep()
utilitaire appelle simplement la fonction fournie sur chaque terme dans le tableau. La fonction, dans ce cas utilise la regexp pour voir si le terme dans le tableau correspond à ce qui a été tapé.de travail de démonstration: http://jsbin.com/ezifi
à quoi il ressemble:
Juste une remarque: j'ai trouver de la documentation sur la saisie semi-automatique pour être assez immature à ce point. Je n'ai pas trouvé des exemples qui l'a fait, et je ne pouvais pas trouver de travail de la doc sur des .les fichiers css sont nécessaires ou qui .les classes css serait utilisé. J'ai appris tout cela à partir d'inspecter le code.
Voir aussi, comment puis-je personnalisé-format de la saisie semi-automatique plug-in résultats?
escapeRegex
était pour et votre post, il explique parfaitement.- Je utiliser la saisie semi-automatique de devbridge. http://www.devbridge.com/projects/autocomplete/jquery/
Il correspond au début de caractères, seulement.
Autant que le matching basé sur prénom ou nom de famille, vous avez juste à fournir une liste de choix avec le prénom et le nom.
Exemple d'utilisation:
La
lookup
option que vous passez à initialiser la saisie semi-automatique de contrôle peut être une liste ou un objet. Le ci-dessus a montré une simple liste. Si vous voulez des données attachées aux suggestions que le renvoi, puis faire lelookup
option d'un objet, comme ceci:thx cheeso pour intrducing jsbin.com,
j'ai élargi votre code à l'appui de la première et de nom correspond à, trop.
démo: http://jsbin.com/ufimu3/
type 'un' ou 're'
Si vous souhaitez rechercher le début de chaque mot de la chaîne, une solution plus élégante de manœuvre est de prendre cheeso de mais il suffit d'utiliser les regexp limite de mot les caractères spéciaux:
Exemple: http://jsbin.com/utojoh/2 (essayez de rechercher pour "bl")
Il y a un autre jQuery autocomplete plug-in qui éventuellement recherches juste au début de chaque élément (l'option est
matchContains=false
, je pense que c'est le défaut de trop).Compte tenu de l'absence d'une telle option dans le plugin jQuery UI, je devine que vous devrez utiliser un autre plugin, ou de réécriture de celui que vous utilisez en ce moment.
Où êtes-vous d'obtenir les données pour remplir la saisie semi-automatique? Est-ce à partir d'une base de données? Si oui, vous pouvez faire ce que vous voulez dans votre requête et retourner uniquement les résultats qui correspondent au début de chaque mot (prénom/nom)