2012-07-26 8 views
23

Ich versuche, die CreateSearchChoice-Funktion zu verwenden, um Benutzern zu ermöglichen, ihre eigene Auswahl einzugeben, wenn die Standardliste nicht ausreicht. Wenn ich versuche, um diese Funktion zu verwenden, um auf ein <select> Element, bekomme ich folgende Fehlermeldung:Mit der CreateSearchChoice-Funktion von Select2

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

ich stattdessen ein <input type='hidden'> Element versucht, mit, aber jetzt die folgende Fehlermeldung erhalten:

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

Ich würde es vorziehen, das Element select zu verwenden, um mit dem vorhandenen Code übereinzustimmen (muss die Möglichkeit haben, mehrere Optionen auszuwählen), aber nur die Möglichkeit für Benutzer, ihre eigene Option zusätzlich zur Auswahl aus einer vorherigen Liste einzugeben.

+0

Könnten Sie Ihre HTML-und JavaScript-Code, der es einhakt? – Prescott

+0

Sieht so aus, als müssten Sie "hidden" verwenden - aber Sie können die "Optionen" im Datenanschluss 'data: ... setzen.' – Prescott

Antwort

28

Oh Gott, wie storniere ich diese Prämie. Ich geriet in Panik und aufgrund der Panik konnte ich beantworten, was wir beide suchten:

Sie können nicht createSearchChoice auf einem select verwenden. Sie müssen also stattdessen einen input verwenden.

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

Das Update ist die query Parameter zu verwenden:

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

Was das bedeutet ist die aktuelle Laufzeit der Optionen hinzufügen, wenn er nicht da ist. Sie können wie so die results Objekt füllen:

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

Dies löste mein Problem so dass ich hoffe, dass es Ihnen gelöst. Ich denke, wir sollten mehr über die documentation lesen.

+0

Aw, ich hoffte auf etwas Bounty! Ich bin froh, dass du es herausgefunden hast. – Prescott

+0

Es stellt sich heraus, dass der Abfrageparameter nicht erforderlich ist, aber der Datenparameter muss sich im selben Konstruktor befinden. Die Formulareingabe wurde meiner Seite mit einer Klasse hinzugefügt, die für das von mir verwendete Framework spezifisch ist und einen Konstruktor mit dem Parameter data enthielt, und ich wollte createSearchChoice in einem separaten Konstruktor hinzufügen, der für die Seite eindeutig ist. Ein bisschen Anpassung und alles funktioniert jetzt. Entschuldigung für die verspätete Antwort. Ihre Antwort brachte mich in die richtige Richtung, also bitte halten Sie Ihr Kopfgeld. :) – jrrdnx

+0

@jrrdnx Können Sie bitte einen Teil Ihres Codes bezüglich der Abfrage- und Datenparameter veröffentlichen? – RailinginDFW

2

Ich hatte dieses Problem und es war wegen Aufruf select2 auf dem gleichen Feld zweimal

Verwandte Themen