L'entrée d'avancement de chargement n'autorise que les valeurs de la liste

Est-il possible de limiter le choix de l'utilisateur par des éléments de source de données prédéfinis pour l'élément Bootstrap Typeahead? Ainsi, si l'utilisateur entre dans quelque chose qui ne figure pas dans la source de données, un message s'affiche en notification à ce sujet?

Voici la version de démonstration:
http://cruiseoutlook.com/test
Invité:

Gilbert

Confirmation de:

Si je comprends bien quand le composant typeahead Perd la mise au point, l'utilisateur doit être averti que son entrée est invalide si elle n'est pas répertoriée?

Ainsi, le code ressemblera à quelque chose comme ça :


var myData = [...]; // This array will contain all your possible data for the typeahead

$/"#my-type-ahead"/.typeahead/{source : myData}/
.blur/validateSelection/;

function validateSelection// {
if/source.indexOf/$/this/.val/// === -1/
alert/'Error : element not in list!'/;
}


Juste être prudent avec le fait que
indexOf

Non mis en œuvre dans IE6-8. Mais les joints peuvent être trouvés, par exemple:
https://coderoad.ru/143847/
.

Frederic

Confirmation de:

J'ai couru dans le même problème, mais dans ma situation toutes mes données étaient

Supprimé

. Bloodhound En fait, pas de bons crochets, que je connais actuellement, qui vous permettent de le faire, mais vous pouvez vous connecter à un appel complet ajax et créer manuellement un cache d'entrée valide, puis vérifiez-le sur change/blur.


var myData = new Bloodhound/{
remote: {
url: '/my/path/%QUERY.json',
ajax: {
complete: function/response/{
response.responseJSON.forEach/function /item/ {
if /myData.valueCache.indexOf/item.value/ === -1/ {
myData.valueCache.push/item.value/;
}
}/;
}
}
}
}/;
myData.valueCache = [];
myData.initialize//;

$/'#artists .typeahead'/.typeahead/null, {
source: myData.ttAdapter//
}/.bind/'change blur', function // {
if /myData.valueCache.indexOf/$/this/.val/// === -1/ {
$/this/.val/''/;
}
}/;

Francis

Confirmation de:

Utiliser une solution jquery et Samuel, je pense que vous surmonterez le problème IE. Changer votre fonction validateSelecion sur le:


function validateSelection// {
if /$.inArray/$/this/.val//, myData/ === -1/
alert/'Error : element not in list!'/;
}


Quitter rest, Comme Samel spécifié.

Pour répondre aux questions, connectez-vous ou registre