2015-05-26 24 views
9

Ho un menu a discesa con ID "selectCountry" compilato da ajax e in caso di successo lego solo il Selectize.selectize.js reload dropdown

$('#selectCountry').selectize({ 
    create: true, 
    sortField: 'text' 
}); 

Quando ho associare nuovamente la mia discesa originale di ajax e cercare di ricaricare/associare nuovamente o rinfrescato il vecchio selectize automatico scatola completa in caso di successo, non ci sarebbe alcun cambiamento sulla vecchia lista.

C'è un modo per ricaricare o aggiornare il menu a discesa Selectize? Ho provato "clearOptions()" e "refreshOptions()".

P.S, non desidero collegare direttamente la selezione da ajax.

OK, ora sto aggiungendo esempio di lavoro di questo problema su jsfiddle

Please help me :(qualsiasi suggerimento sarebbe grande per me. Grazie mille

+0

aveva provato anche questo :(, è inutile –

+0

Puoi pubblicare altro codice? – basher

+0

cos'altro, più codice necessario :), In realtà altro codice è correlato a jtable.org, il codice sopra è completo e funziona alla prima volta dropdown legare. –

risposta

10

Alcuni come, ho trovato la risposta e il suo lavoro here

basta aggiungere questa linea di codice e il suo funzionamento.

$('#select-tools').selectize()[0].selectize.destroy(); 
+1

C'è un modo per forzare la selezione da popolare da originale, senza dover distruggere la selezione e perdere le impostazioni esistenti? –

6

Sembra che tu anche aperto un issue on the project, che non è, secondo me, un buon utilizzo dei temi del progetto.

risposi lì, io ripeto la risposta qui nel caso in cui può essere utile ad altre persone.

è shoul d non ricreare il componente Selectize con il tag originale. Dovresti usarlo per aggiornare le sue opzioni, usando clearOptions() come hai indovinato, quindi addOption() (nonostante il singolare, accetta un array). Ho aggiornato il vostro violino (+1 per fare uno) per mostrare questo: https://jsfiddle.net/m06c56y0/20/

La parte rilevante è:

var selector; 
$('#button-1').on('click', function() { 
    selector = $('#select-tools').selectize({ 
     maxItems: null, 
     valueField: 'id', 
     labelField: 'title', 
     searchField: 'title', 
     options: [{ 
      id: 1, 
      title: 'Spectrometer', 
      url: 'http://en.wikipedia.org/wiki/Spectrometers' 
     }, { 
      id: 2, 
      title: 'Star Chart', 
      url: 'http://en.wikipedia.org/wiki/Star_chart' 
     }], 
     create: false 
    }).data('selectize'); 
}); 

$('#button-2').on('click', function() { 
    console.log(selector); 
    selector.clearOptions(); 
    selector.addOption([{ 
      id: 1, 
      title: 'Spectrometer', 
      url: 'http://en.wikipedia.org/wiki/Spectrometers' 
     }, { 
      id: 3, 
      title: 'Electrical Tape', 
      url: 'http://en.wikipedia.org/wiki/Electrical_tape' 
     }]); 
}); 
+0

hai perso la mia domanda, in realtà quando voglio fare clic sul 1 ° pulsante legherà con quei valori e quando farò clic sul secondo pulsante legherà le 2 opzioni, e continuerà dal 2 al 1 °. Ho trovato la soluzione e ho scritto la risposta. per favore vota :) perché non sono in grado di votare la mia risposta. –

+0

@ObaidAhmed Non riesco ancora a suscitare l'interesse di ricreare il controllo Selectize, invece di aggiornarlo, ma se è davvero ciò che vuoi/devi fare, sono felice che tu abbia trovato la soluzione. A proposito, non dimenticare di chiudere il problema che hai aperto ... – PhiLho

1

Si può anche fare questo:

$('#whateverYouCalledIt').selectize()[0].selectize.clear(); 

solo per cancellare ciò che è stato selezionato. Non cancellerà la tua lista di selezione.