2012-07-26 5 views
23

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 je tente d'utiliser cette fonction sur un élément <select>, je reçois l'erreur suivante:Utilisation de la fonction createSearchChoice de Select2

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

J'ai essayé d'utiliser un lieu élément <input type='hidden'>, mais maintenant obtenir 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 (besoin de pouvoir sélectionner plusieurs options), mais j'ai juste besoin de la possibilité pour les utilisateurs d'entrer leur propre option en plus de la sélection dans une liste précédente.

+0

Pouvez-vous poster votre code html et javascript code Raccrochez up? – Prescott

+0

On dirait que vous devez utiliser caché - mais vous pouvez définir les "options" dans les données de branchement 'données: ...' – Prescott

Répondre

28

Oh mon dieu, Comment puis-je annuler cette prime. J'ai paniqué et en raison de la panique j'ai été en mesure de répondre à ce que nous cherchions tous les deux:

Vous ne pouvez pas utiliser createSearchChoice sur un select. Donc, vous devez utiliser un input à la place.

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

Le correctif est d'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 fait est d'ajouter le terme actuel aux options si elle est pas là. Vous pouvez remplir l'objet results comme ceci:

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

Ce résolu mon problème donc je l'espère résolu le vôtre. Je pense que nous devrions lire plus sur le documentation.

+0

Aw, j'espérais tellement pour une prime! Content que tu l'aies compris. – Prescott

+0

Il s'avère que le paramètre de requête n'est pas requis, mais le paramètre de données doit être dans le même constructeur. L'entrée de formulaire était ajoutée à ma page avec une classe spécifique au framework que j'utilisais et incluait un constructeur avec le paramètre data, et j'essayais d'ajouter createSearchChoice dans un constructeur séparé unique à la page. Un peu de personnalisation et tout fonctionne maintenant. Désolé pour la réponse tardive. Votre réponse m'a fait aller dans la bonne direction, alors s'il vous plaît gardez votre générosité. :) – jrrdnx

+0

@jrrdnx Pouvez-vous s'il vous plaît poster une partie de votre code concernant la requête et les paramètres de données? En utilisant l'entrée – RailinginDFW

2

J'ai eu ce problème et cela était dû à appeler select2 sur le même terrain deux fois

Questions connexes