5

我有两个选择选项,class 和 class_attr 类有 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。谢谢~

4

2 回答 2

6

尝试这个:

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

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

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

看起来您在初始化后无法更改任何选项,因此必须在再次创建之前将其销毁。

[编辑] 您可以通过$(".class_attr").data('chosen').
然后您可以直接在实例上更新选项:

$('.class_attr').data('chosen').max_selected_options = 2;
$('.class_attr').trigger("chosen:updated");
于 2013-08-13T18:03:35.950 回答
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>
于 2017-08-14T11:58:26.823 回答