web-dev-qa-db-fra.com

Utilisation de la fonction createSearchChoice de Select2

J'essaie d'utiliser la fonction createSearchChoice pour permettre aux utilisateurs d'entrer leur propre choix lorsque la liste par défaut ne suffira pas. Lorsque j'essaie d'utiliser cette fonction sur un <select> élément, j'obtiens l'erreur suivante:

Error: Error: Option 'createSearchChoice' is not allowed for Select2 when attached to a <select> element.

J'ai essayé d'utiliser un <input type='hidden'> élément à la place, mais obtient maintenant l'erreur suivante:

Error: uncaught exception: query function not defined for Select2 'MyInputName'

Je préférerais utiliser l'élément select pour rester en ligne avec le code existant (avoir besoin de pouvoir sélectionner plusieurs options), mais juste avoir la possibilité pour les utilisateurs de saisir leur propre option en plus de sélectionner dans une liste précédente.

22
jrrdnx

Oh mon Dieu, comment puis-je annuler cette prime. J'ai paniqué et à cause de la panique, j'ai pu répondre à ce que nous recherchions tous les deux:

Vous ne pouvez pas utiliser createSearchChoice sur un select. Vous devez donc utiliser un input à la place.

<input type="hidden" id="category">

Le correctif consiste à utiliser le paramètre query:

$("#category").select2({query:function(query){
  var data = {results: []};
  data.results.Push({text: query.term});
  query.callback(data);
}});

Ce que cela signifie, c'est d'ajouter le terme actuel aux options s'il n'est pas là. Vous pouvez remplir l'objet results comme ceci:

var data = {results: [{text:'math'},{text:'science'}]};

Cela a résolu mon problème, j'espère donc qu'il a résolu le vôtre. Je pense que nous devrions en savoir plus sur la documentation .

28
Jürgen Paul

J'ai eu ce problème et c'était dû à deux appels à select2 sur le même champ

2
Jeff Dickey