2012-02-13 1 views
6

Sto usando il widget di selezione multipla jQuery. Vorrei deselezionare tutto se tutti fossero stati controllati manualmente. Ho un codice di esempio in JSFiddle--> Codecome deselezionare tutte le opzioni nel widget di selezione multipla

Questo non funziona. Quando le opzioni di selezione vengono selezionate manualmente, selezionare nessuna delle opzioni deselezionate in seleziona mi dà 1 (al clic dell'ultima opzione) la prima volta. quindi ho controllato se $this.children("option").not('[selected]').length è 1 e ui.checked e chiamando lo uncheckAll ma dopo si sta comportando correttamente il codice se $this.children("option").not('[selected]').length mi dà 0 quando si seleziona quello finale.

Mi chiedo cosa sta succedendo.

+1

Non ho idea di quello che stai chiedendo, e il selezionare/deselezionare tutti nella violino funziona bene per me? –

+0

prova a selezionarli tutti manualmente. l'evento multiselectclick dovrebbe essere attivato. se tutte le opzioni sono selezionate allora dovrebbe deselezionare che non sta succedendo – coool

+0

sta funzionando per me se li controllo manualmente – Vigrond

risposta

12

bene: ecco la soluzione ciò che si vuole ... controlla la documentation, non v'è modo di ottenere getCheckedselected options. il tuo non funziona perché il plug-in riformatta gli elementi selezionati. esempio

$('.multi').multiselect({ 
    click: function(e, ui){ 
    if($(this).multiselect("getChecked").length 
           == $('select.multi > option').length){ 
     $(this).multiselect("uncheckAll");  
    }   
    } 
}); 

violino:http://jsfiddle.net/fG6PT/11/

9
$("#multiselectelement").multiselect("uncheckAll");