2013-08-13 15 views
5

Ho due selezionare l'opzione, di classe e class_attr classe ha 2 opzioni: A e B class_attr ha molte opzioni: AA, BB, CC, DD, EE, ...cambiamento jquery scelto opzione max_selected dinamicamente

La mia domanda è, come implementare se l'utente sceglie A, il max_selected scelto è solo 5 opzioni, e se l'utente cambia in B, il max_selected scelto è solo 3 opzioni.

sto cercando di fare qualcosa di simile:

$(".class").change(function(){ 
     var code = $(this).val(); 
     if(code == 1){ 
      $(".class_attr").chosen({max_selected_options: 5}); 
      } 
     else{ 
       $(".class_attr").chosen({max_selected_options: 3});   
     } 
     $(".class_attr").trigger("liszt:updated"); 
}); 

ma questo sembra non può funzionare, l'elenco delle opzioni per class_attr sarà impostata solo una volta (il primo valore max_selected_options classe selezionata, se 5 o 3) e non aggiornerà mai max_selected_options dopo la prima volta. Grazie ~

risposta

5

provare questo:

$('.class').chosen().change(function() { 

    var code = $(this).val(); 
    var maxOptions = code == 1 ? 5 : 3; 

    $(".class_attr").chosen('destroy').chosen({ max_selected_options: maxOptions }); 
}); 

Sembra che non è possibile modificare le opzioni dopo che è stato initalised quindi deve essere distrutto prima di essere creato una volta di più.

+0

Sorry2 ho appena ricevuto tipo sbagliato, voglio dire che Trigger ("Liszt: aggiornata"); su $ (". class_attr") invece di $ ("# item_opt") ma continua a non funzionare – paugoo

+0

Grazie mille per la risposta. Ho provato a implementare il tuo metodo, ma non può ancora funzionare, e anche le opzioni max_selected_options non possono funzionare affatto. – paugoo

+0

Ecco un [violino] (http://jsfiddle.net/55FDq/) che mostra che funziona. Penso che sia necessario utilizzare il 1.0 scelto per ottenere la funzionalità di distruzione. –

1

In un mio progetto mi è stato bisogno di impostare il valore massimo non a tutti i menu a discesa scelti, così ho usato la prossima inizializzazione per loro:

jQuery.each(jQuery(".chosen-select"), function (index, select) { 
    var max_options = 0;//zero mean unlimited 

    if (jQuery(select).data('max-options') !== 'undefined') { 
     max_options = jQuery(select).data('max-options'); 
    } 

    jQuery(select).chosen({ 
     search_contains: true, 
     no_results_text: lang.no_results, 
     placeholder_text_single: lang.select_one, 
     placeholder_text_multiple: lang.select_some, 
     disable_search: disable_search, 
     max_selected_options: max_options 
    }); 
}); 

Sulla discesa quali opzioni massimo selezionato dovrebbero essere limitate I impostare l'attributo data-max-opzioni

Esempio:

<select class="chosen-select" data-max-options="5" name="lands[]" multiple="" data-placeholder=''> 
         //options in cycle here 
</select> 
Problemi correlati