La saisie semi-automatique interdire la libre entrée de texte?
Est-il possible de refuser d'entrer du texte libre dans le JQuery UI autocomplete widget?
par exemple, je veux seulement que l'utilisateur soit autorisé à sélectionner à partir de la liste des éléments qui sont présentés dans la liste de saisie semi-automatique, et ne veulent pas d'eux pour être en mesure d'écrire du texte aléatoire.
Je n'ai rien vu dans les démos/docs décrivant comment le faire.
http://jqueryui.com/demos/autocomplete/
Je suis en utilisant la saisie semi-automatique comme ce
$('#selector').autocomplete({
source: url,
minlength: 2,
select: function (event, ui) {
//etc
}
Vous devez vous connecter pour publier un commentaire.
Un autre moyen serait d'utiliser une validation supplémentaire sur le formulaire de soumission (si vous utilisez un formulaire) pour mettre en surbrillance une erreur si le texte n'est pas l'une de l'option valide.
Une autre façon serait de joindre à l'auto complète de l'événement de changement qui va me faire virer, même si une option n'est pas sélectionnée. Vous pourrez alors faire une validation afin de s'assurer de la saisie de l'utilisateur dans votre liste ou afficher une erreur si elle ne l'est pas.
Selon la La documentation de l'API, le
change
de l'événementui
propriété est null si l'entrée n'a pas été choisi à partir de la liste, de sorte que vous pouvez désactiver les gratuit texte simplement comme ceci:change: (e, ui) -> ($ '#input_box').val('').focus() if not ui.item
pour la Coffeescripters.event.currentTarget.value = ''; event.currentTarget.focus();
tous les cas où cela ne fonctionnerait pas?$(this).val(""); $(this).focus();
Si vous souhaitez que l'utilisateur vient d'obtenir l'élément dans la liste, puis utiliser la saisie semi-automatique zone de liste déroulante.
http://jqueryui.com/demos/autocomplete/#combobox
HTH
J'ai utilisé de la zone de liste déroulante module qui vous donne une "flèche bas" bouton. Puis à la balise input, il suffit d'ajouter le texte suivant à la balise d'entrée à droite autour de la ligne 41 (selon votre version de la zone de liste déroulante http://jqueryui.com/demos/autocomplete/#combobox )
d'entrée.attr("readonly", "readonly");
Puis ajoutez le code de sorte que si l'utilisateur clique sur la zone de saisie, il va montrer la liste déroulante.
Pour ma part, j'ai ajouté un readonly drapeau que je peux passer dans le module, donc si j'en ai besoin en lecture seule, je peux l'activer/désactiver ainsi.
Vieille question, mais ici:
La zone de liste déroulante de l'option fonctionne bien si vous utilisez une liste, toutefois, si vous avez une dynamique de la liste générée par l'intermédiaire d'un json obtenir, alors vous ne pouvez capturer les données sur le changement.
Exemple complet avec des paramètres supplémentaires ci-dessous.
Ce sujet mustMatch option?
'Si la valeur est true, l'autocomplétion autorise uniquement les résultats qui sont présentés par le backend. Notez que les valeurs de résultat dans une zone de saisie vide.'
mustMatch
est une option d'être obsolète, jQuery Autocomplete plugin, ce sujet est à propos de jQuery-ui Autocomplete composant.