2012-07-26 16 views
23

Sto tentando di utilizzare la funzione createSearchChoice per consentire agli utenti di immettere la propria scelta quando l'elenco predefinito non è sufficiente. Quando si tenta di utilizzare questa funzione su un elemento <select>, ottengo il seguente errore:Utilizzo della funzione createSearchChoice di Select2

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

Ho provato ad utilizzare un elemento <input type='hidden'> invece, ma ora ottenere il seguente errore:

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

Preferirei utilizzare l'elemento select per rimanere in linea con il codice esistente (serve la possibilità di selezionare più opzioni), ma solo la possibilità per gli utenti di inserire la propria opzione oltre a selezionare da un elenco precedente.

+0

Potrebbe pubblicare il tuo codice HTML e JavaScript che si aggancia in su? – Prescott

+0

Sembra che tu debba usare hidden - ma puoi impostare le "opzioni" nel collegamento dati 'dati: ...' – Prescott

risposta

28

Oh Dio, come annullo questa taglia. Mi sono lasciato prendere dal panico e sono stato in grado di rispondere a quello che stavamo cercando:

Non è possibile utilizzare createSearchChoice su un select. Quindi devi usare un input invece.

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

La correzione è quello di utilizzare il parametro query:

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

Quello che fa è aggiungere il termine corrente per le opzioni se non è lì. È possibile popolare l'oggetto results in questo modo:

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

Questo risolto il problema quindi spero che risolto il vostro. Penso che dovremmo leggere di più su documentation.

+0

Aw, stavo così sperando in qualche ricompensa! Sono contento che tu l'abbia capito comunque. – Prescott

+0

Si scopre che il parametro query non è obbligatorio, ma il parametro data deve essere nello stesso costruttore. L'input del modulo veniva aggiunto alla mia pagina con una classe specifica per il framework che sto usando e includeva un costruttore con il parametro data, e stavo cercando di aggiungere createSearchChoice in un costruttore separato, unico per la pagina. Un po 'di personalizzazione e tutto funziona ora. Ci scusiamo per la risposta ritardata. La tua risposta mi ha fatto andare nella direzione giusta, quindi per favore mantieni la tua generosità. :) – jrrdnx

+0

@jrrdnx Puoi inserire una parte del tuo codice per quanto riguarda i parametri di query e dati? – RailinginDFW

2

Ho avuto questo problema ed è stato a causa di chiamare select2 sullo stesso campo due volte

Problemi correlati