2013-08-13 16 views
5

Ben ettik iki seçme seçeneği, sınıf ve class_attr sınıf 2 seçenek vardır: A ve B class_attr birçok seçenek vardır: aa, bb, cc, dd, ee, ...değişim jquery max_selected seçeneği seçilmiş dinamik

Sorum, kullanıcı A'yı seçtiğinde, seçilen maks_selected yalnızca 5 seçenek olduğunda ve kullanıcı B olarak değiştirilirse nasıl uygulanacağı, seçilen maksimum_ seçim yalnızca 3 seçenektir.

Böyle bir şey yapmaya çalışıyorum:

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

Ama bu çalışamaz görünüyor class_attr seçenek listesi yalnızca bir kez ayarlanır (birinci sınıf max_selected_options değer 5 olsun veya seçilen 3) ve ilk kez sonra max_selected_options güncel asla. Eğer ~

cevap

5

bu deneyin ederiz:

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

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

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

O bir kez daha yaratılıyor önce imha edilmesi gereken yüzden initalised geçirildikten sonra Herhangi bir seçeneği değiştiremezsiniz benziyor.

+0

Sorry2 sadece yanlış tip var, ben tetiklemek demek: set veri-max-seçenekleri

Örnek özniteliği ("Liszt'i: updated"); $ (". class_attr") yerine $ ("# item_opt") yerine ancak hala çalışmıyor – paugoo

+0

Cevabınız için çok teşekkür ederim. Yönteminizi uygulamaya çalıştım, ancak yine de çalışamıyor ve hatta max_selected_options hiç çalışmıyor. – paugoo

+0

Çalıştığını gösteren bir [fiddle] (http://jsfiddle.net/55FDq/). Destroy işlevselliğini elde etmek için seçilen 1.0 kullanmanız gerektiğini düşünüyorum. –

1

biri Projemde tüm seçilmiş açılır listelerinin ayarlı maximun değere ihtiyaç, bu yüzden onlar için bir sonraki başlatma kullandı:

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

maksimum seçilen seçenekler I sınırlı olmalıdır açılır On

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