Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态更改jquery selected max_selected选项_Javascript_Max_Option_Jquery Chosen_Multiple Select - Fatal编程技术网

Javascript 动态更改jquery selected max_selected选项

Javascript 动态更改jquery selected max_selected选项,javascript,max,option,jquery-chosen,multiple-select,Javascript,Max,Option,Jquery Chosen,Multiple Select,我有两个选择选项,class和class\u attr 类有两个选项:A和B 类属性有很多选项:aa、bb、cc、dd、ee、 我的问题是,如果用户选择A,则选择的最大值仅为5个选项,如果用户更改为B,则选择的最大值仅为3个选项,如何实现 我正在尝试这样做: $(".class").change(function(){ var code = $(this).val(); if(code == 1){ $(".class_attr").chos

我有两个选择选项,class和class\u attr 类有两个选项:A和B 类属性有很多选项:aa、bb、cc、dd、ee、

我的问题是,如果用户选择A,则选择的最大值仅为5个选项,如果用户更改为B,则选择的最大值仅为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的选项列表将只设置一次(选择的第一个class max_selected_options值,无论是5还是3),并且在第一次之后将永远不会更新max_selected_选项。 谢谢~

试试这个:

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

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

    $(".class_attr").chosen('destroy').chosen({ max_selected_options: maxOptions });
});
它看起来在初始化后无法更改任何选项,因此必须在再次创建之前将其销毁

[编辑] 您可以通过
$(“.class\u attr”).data('selected')访问所选实例

然后可以直接在实例上更新选项:

$('.class_attr').data('chosen').max_selected_options = 2;
$('.class_attr').trigger("chosen:updated");

在我的一个项目中,我需要将maximun value设置为所有选择的下拉列表,因此我使用了下一次初始化:

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
    });
});
在“应限制哪些最大选定选项”下拉列表中,我设置了“属性数据最大选项”

示例

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

//循环中的选项在这里

Sorry2我刚输入了错误的类型,我的意思是我触发了(“李斯特:更新”);用$(“.class_attr”)代替$(“#item_opt”),但仍然不起作用。非常感谢您的回复。我已经尝试实现了你的方法,但它仍然无法工作,甚至max_selected_选项也无法工作。下面是一个显示它工作的示例。我认为您需要使用Selected 1.0来获得销毁功能。