2013-01-11 3 views
5

Ho un cliente che vuole offrire agli utenti la possibilità di selezionare fino a 5 opzioni aggiuntive da un elenco. Mi piace il concetto Chosen.js, ma come posso limitare la selezione? Suppongo che una soluzione sia quella di usare onChange per contare il numero selezionato e quindi disabilitare il resto, ma esiste una soluzione migliore?Chosen.js - è possibile limitare il numero di elementi selezionati?

+0

non è necessario disabilitare altre opzioni, è possibile deselezionare l'opzione che viene sesto alla selezione e mostrare un messaggio ... – shin

risposta

11

Chosen fornisce un max_selected_options per consentire di fare questo:

$(".chzn-select").chosen({ max_selected_options: 5 }); 
+0

D'oh! Come mi sono perso? Cosi 'semplice. –

+0

Ora il cliente ha cambiato idea e vuole farlo con le caselle di controllo. Grazie a @mccannf per questa soluzione, sarà ricordato per un altro giorno. –

+0

@mccannf possiamo cambiare il max_selected_options dopo la configurazione iniziale? non sembra funzionare se si tenta di cambiare max_selected_options –

0

max_selected_options: 5 non funziona nel mio caso. Così ho risolto come segue.

var countSelect = 0; 
$(".chosen-select").chosen().change(function (e, params) {   
    if(params.deselected != undefined) { countSelect--; } 
    if(params.selected != undefined) { countSelect++; } 
    if(countSelect > 3) {   
     $('.chosen-select option[value="'+params.selected+'"]').attr('selected', false); 
     $(this).trigger('chosen:updated'); 
     countSelect--; 
    } 
}); 

Provalo. Funziona molto bene.