2013-08-13 2 views
5

Я два выбора опции, класс и class_attr класс имеет 2 варианта: A и B class_attr имеет много вариантов: AA, BB, CC, DD, EE, ...изменения JQuery выбрали max_selected вариант динамически

Мой вопрос в том, как реализовать, если пользователь выбирает A, выбранный max_selected - это всего лишь 5 параметров, и если пользователь изменится на B, выбранный max_selected будет всего 3 варианта.

Я пытаюсь сделать что-то вроде этого:

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

Но это, кажется, не может работать, то список опций для class_attr будет установлен только один раз (выбирается первое значение max_selected_options класса, будь то 5 или 3) и никогда не будет обновлять max_selected_options после первого раза. Спасибо ~

ответ

5

Попробуйте это:

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

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

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

Похоже, что вы не можете изменить какие-либо параметры после того, как он был initalised поэтому он должен быть уничтожен до того, создано еще раз.

+0

Sorry2 Я только что получил неправильный типа, я имею в виду, я запуск ("Лист: обновленный"); на $ (". class_attr") вместо $ ("# item_opt"), но он все еще не работает – paugoo

+0

Большое спасибо за ответ. Я пытался реализовать свой метод, но он все еще не может работать, и даже max_selected_options не могут работать вообще. – paugoo

+0

Вот [скрипка] (http://jsfiddle.net/55FDq/), показывающая его работу. Я думаю, вам нужно использовать выбранный 1.0, чтобы получить функциональность destroy. –

1

В одном моем проекте я нужен набор Maximun значение не для всех выбранного раскрывающихся, поэтому я использовал следующие инициализации для них:

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

В раскрывающемся меню, которое максимально выбранный вариант должен быть ограниченно I набор данные атрибуты-Max-опционы

Пример:

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