0

I intégré Bootstrap tags input avec Bootstrap 3 Typeahead mettre des données fournir sur le champ d'entrée comme celui-ci:étiquettes Bootstrap entrée avec Bootstrap 3 erreur typeahead

<input type="text" name="search" id="search" data-provide="typeahead" autocomplete="off"> 

Et initialisant dans mon fichier js comme:

$('#search').tagsinput({ 
    confirmKeys: [44], 
    typeahead: { 
     source: $.getJSON('/Functions/hints.php') 
    } 
}); 

Tout fonctionne bien, hints.php envoie json, typeahead fonctionne, les balises fonctionnent, mais j'ai un problème quand j'essaie d'ajouter un élément à partir d'une liste suggérée. Par exemple, je veux chercher "vêtements", je tape "cl" et "vêtements est suggéré, je choisis cet élément de la" liste déroulante "et il est inséré comme une balise, mais le problème est que" cl "reste dans le champ d'entrée et j'obtiens une erreur disant "TypeError: undefined n'est pas un objet (évaluant 'data [option] .apply')"

J'ai également noté que cela fonctionne bien si je commence à écrire un terme qui doesn ne suggère rien (ne démarre pas le typeahead), il sera transformé en balise sans problème, et l'entrée est claire après qu'elle se transforme en balise.J'obtiens seulement cette erreur une fois que le typeahead a été initialisé. entrer des mots sans suggestion aussi longtemps que je veux et ça marche bien, mais une fois que je tape une lettre qui me donne des suggestions à partir de ce point, je reçois toujours l'erreur mentionnée, peu importe si la lettre est reconnue ou pas et si je choisis le élément de la liste ou tapez dans mon propre mot.

J'ai essayé le correctif mentionné par xplicit sur ce link, et j'ai essayé d'écrire du code personnalisé pour effacer le champ mais je reçois toujours une sorte d'erreur et ne peux pas effacer le champ de saisie.

Répondre

0

Bien sûr, il est trop tard, mais je vais répondre quand même.

J'ai rencontré le problème similaire et utilisé une solution de contournement.

Il est fonction bootstrap-tagsinput.js, qui mettent à jour la liste des balises et retourner un texte à la typeahead (ligne 329):

 updater: function (text) { 
     self.add(this.map[text]); 
     return this.map[text]; 
     }, 

Je ne sais pas pourquoi, mais il renvoie le texte de l'étiquette dans le champ de saisie. Donc je viens de changer ce code pour:

 updater: function (text) { 
     self.add(this.map[text]); 
     return ""; 
     }, 

Cela ne fonctionne pas.