更改jquery动态选择max_selected选项

时间:2013-08-13 17:24:22

标签: javascript max option jquery-chosen multiple-select

我有两个select选项,class和class_attr class有2个选项:A和B. class_attr有很多选项:aa,bb,cc,dd,ee,...

我的问题是,如果用户选择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。 谢谢〜

2 个答案:

答案 0 :(得分:6)

试试这个:

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

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

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

看起来你无法改变任何选项,因为它必须在再次创建之前被销毁。

答案 1 :(得分:1)

在我的一个项目中,我需要设置最大值而不是所有选定的下拉菜单,所以我使用了下一个初始化:

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

在应限制最大选定选项的下拉列表中,我设置属性data-max-options

示例

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