2012-01-23 6 views
71

Sto provando a modificare l'opzione attualmente selezionata in una selezione con il plug-in Scelto.Modifica della selezione in una selezione con il plug-in Scelto

Il documentation copre l'aggiornamento dell'elenco e attiva un evento quando un'opzione è selezionata, ma nulla (che è possibile vedere) in caso di modifica esterna del valore attualmente selezionato.

ho fatto un jsFiddle to demonstrate the code ei miei tentativi di modi di cambiare la selezione:

$('button').click(function() { 
    $('select').val(2); 
    $('select').chosen().val(2); 
    $('select').chosen().select(2); 
}); 
+0

non ho potuto correre la dimostrazione jsfiddle che hai fornito. potresti per favore aggiornarlo. – Lucky

+0

Ok. Il motivo per cui non ho potuto eseguire la tua dimostrazione era che la libreria scelta stava puntando a un URL errato. Ecco l'aggiornamento [jsfiddle] (http://jsfiddle.net/queZ6/666/) – Lucky

risposta

165

Dalla sezione "Aggiornamento Chosen dinamico" nel docs: È necessario attivare il 'prescelto: aggiornato' evento sul campo

$(document).ready(function() { 

    $('select').chosen(); 

    $('button').click(function() { 
     $('select').val(2); 
     $('select').trigger("chosen:updated"); 
    }); 

}); 

NOTA: versioni precedenti alla 1.0 utilizza il seguente:

$('select').trigger("liszt:updated"); 
+5

FYI: sono stati aggiornati a 1.0, che ora utilizza 'scelto: aggiornato' invece di' liszt: aggiornato' – Henesnarfel

+0

Grazie Henesnarfel, aggiornato a riflettono la nuova versione. –

+0

Mi sono imbattuto qui mentre stavo cercando di trovare un modo per selezionare la migliore opzione attualmente corrispondente da un elenco di risultati di ricerca selezionati multi selezione (ogni volta che si è perso lo stato attivo). Ecco [a short fiddle] (http://jsfiddle.net/zFBCy/4/) sulle mie esplorazioni. Non è necessario che l'evento attivi eventi. Forse, è utile anche per qualcun altro ... :) – Timo

19

La mia risposta è in ritardo, ma voglio aggiungere alcune informazioni che mancano in tutte le risposte di cui sopra.

1) Se si desidera selezionare un valore singolo nella selezione selezionata.

$('#select-id').val("22").trigger('chosen:updated'); 

2) Se si utilizza la selezione multipla selezionata, potrebbe essere necessario impostare più valori alla volta.

$('#documents').val(["22", "25", "27"]).trigger('chosen:updated'); 

Le informazioni raccolte dal seguente link:
1) Chosen Docs
2) Chosen Github Discussion

+0

Perfezione! Ha funzionato alla grande – Garconis

0

a volte è necessario rimuovere le opzioni attuali al fine di manipolare le opzioni selezionate.

Ecco un esempio come aggiungere opzioni:

<select id="mySelectId"> 
    <option value=""></option> 
    <option value="Argentina">Argentina</option> 
    <option value="Germany">Germany</option> 
    <option value="Greece">Greece</option> 
    <option value="Japan">Japan</option> 
    <option value="Thailand">Thailand</option> 
</select> 

<script> 
    mySelect = $('#mySelectId'); 
    var selected = mySelect.val();       //get current values 
    selected = selected.concat(['Germany','Argentina']); //merge with new values 
    selected = Array.from(new Set(selected));    //make values unique 
    mySelect.val(null);         //delete current options 
    mySelect.val(selected);        //add new options 
    mySelect.trigger('chosen:updated');     //update chosen 
</script> 
Problemi correlati