2013-08-13 10 views
5

Ich habe zwei wählen Sie die Option, Klasse und class_attr Klasse hat zwei Optionen: A und B class_attr hat viele Optionen: aa, bb, cc, dd, ee, ...Änderung jquery max_selected Option gewählt dynamisch

Meine Frage ist, wie man implementiert, wenn der Benutzer A auswählt, das gewählte max_selected ist nur 5 Optionen, und wenn der Benutzer zu B wechselt, ist das gewählte max_selected nur 3 Optionen.

Ich versuche, so etwas zu tun:

$(".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"); 
}); 

Aber das scheint nicht funktionieren kann, wird die Optionsliste für class_attr nur einmal festgelegt werden (die erste Klasse max_selected_options Wert ausgewählt, ob 5 oder 3) und aktualisiert nie die max_selected_options nach dem ersten Mal. Danke ~

Antwort

5

Try this:

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

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

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

Es sieht aus wie Sie keine Optionen ändern können, nachdem es initalised worden ist, so dass es schon einmal mehr erstellt zerstört werden muss, ist.

+0

Sorry2 ich nur falsche Art bekam, ich meine, ich auslösen ("liszt: aktualisiert"); auf $ (". class_attr") statt auf $ ("# item_opt") aber es funktioniert immer noch nicht – paugoo

+0

Vielen Dank für die Antwort. Ich habe versucht, Ihre Methode zu implementieren, aber es kann immer noch nicht funktionieren, und sogar die max_selected_options kann überhaupt nicht funktionieren. – paugoo

+0

Hier ist eine [Geige] (http://jsfiddle.net/55FDq/), die es funktioniert zeigt. Ich denke, dass Sie gewähltes 1.0 verwenden müssen, um die Zerstörungsfunktionalität zu erhalten. –

1

In einem meiner Projekt wurde ich eingestellt brauchen nicht maximun Wert für alle ausgewählten Drop-downs, so habe ich nächste Initialisierung für sie:

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 
    }); 
}); 

Auf dem Drop-down die maximal ausgewählten Optionen I werden sollte begrenzt Satz Attributdaten-max-Optionen

Beispiel:

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