2010-12-08 6 views
6

J'ai une zone de texte avec source de données à distance pour autocomplete (jquery) [pas le plugin, l'original montré en jquery ui demos] Comment puis-je m'assurer que l'utilisateur a tapé seulement ce qui était dans l'une des suggestions autocomplete et rien de son posséder ?validant jquery autocomplete

Répondre

13

La question manque de détails, mais je suppose que vous voulez dire valider du côté client puisque vous avez explicitement fait référence au plugin auto complete. Cette réponse aura deux parties. Le premier est la réponse originale, en supposant un plugin autocomplete. La seconde est révisée en fonction des mises à jour de la question.

1) En utilisant http://docs.jquery.com/Plugins/Autocomplete

La meilleure solution pour cela est l'option "mustMatch". Voici l'API documentation.

Si cette propriété est définie sur true, l'autocompléteur autorisera uniquement les résultats présentés par le backend. Notez que les valeurs illégales résultent en une zone de saisie vide.

Vous devriez pouvoir l'utiliser de cette manière:

$("selector").autocomplete("url", {"mustMatch": true}); 

Vous pouvez également valider l'entrée utilisateur d'une certaine façon, en cas de « résultat ». Voici un lien: http://docs.jquery.com/Plugins/Autocomplete/result.

2) En utilisant http://jqueryui.com/demos/autocomplete

Il n'y a pas d'option de mustMatch ici. Vous pouvez étendre le plugin, ou vous pouvez ajouter quelque chose de similaire à ce que j'ai mentionné pour l'autre plugin autocomplete. Utilisez l'événement "change". Si vous utilisiez un tableau en tant que source de données, ce serait plus efficace. Puisque vous utilisez une source de données distante, vous devrez faire une autre requête finale en utilisant ui.item pour valider la valeur de l'utilisateur. Vous pouvez ensuite autoriser ou refuser le comportement par défaut.

Dans les deux cas, l'entrée doit toujours être validée d'une manière ou d'une autre côté serveur. Ceci est hors de la portée des plugins jQuery.

+0

désolé, j'ai oublié de mentionner, j'utilise cette autocomplete: http://jqueryui.com/demos/autocomplete/#default et il ne semble pas soutenir mustMatch :( – Shrinath

+0

Dommage, j'ai mis à jour – jthompson

+0

Bien que cette question soit très ancienne et que l'option mustMatch ne semble jamais être supportée, je suis toujours à la recherche d'une solution similaire, peut-être que ma question vous aidera aussi: http: // stackoverflow.com/questions/23778628/firing-event-on-jquery-ui-autocomplete-before-minlength – webDEVILopers