选择多选订单。页面加载时插件处于活动状态

时间:2014-02-27 15:24:01

标签: javascript jquery multi-select jquery-chosen

我对jquery不太熟悉,所以不要太严格。任务是在Chosen multiselect插件中进行排序。 这是解决方法:

$(function(){
        $("select#Books_id_author").each(function(){
            if($(this).data("order")==true){
                $(this).val('');
                $(this).chosen();
                var $ordered = $('[name="_'+jQuery(this).attr('id')+'"]');
                var selected = $ordered.val().split(',');
                var chosen_object = $(this).data('chosen');
                $.each(selected, function(index, item){
                    $.each(chosen_object.results_data, function(i, data){
                        if(data.value == item){
                            $("#"+data.dom_id).trigger('mouseup');
                        }
                    });
                });
                $(this).data("backupVal",$(this).val());
                $(this).change(function(){
                    var backup = $(this).data("backupVal");
                    var current = $(this).val();
                    if(backup == null){
                        backup = [];
                    }
                    if(current == null){
                        current = [];
                    }
                    if(backup.length > current.length){
                        $.each(backup, function(index, item) {
                            if($.inArray(item, current) < 0){
                                for(var i=0; i<selected.length; i++){
                                    if(selected[i] == item){
                                        selected.splice(i,1);
                                    }
                                }
                            }
                        });
                    }else if(backup.length < current.length){
                        $.each(current, function(index, item) {
                            if($.inArray(item, backup) < 0){
                                selected.push(item);
                            }
                        });
                    }
                    $ordered.val(selected.join(','));
                    $(this).data("backupVal",current);
                });
            }else{
                $(this).chosen();
            }
        });
    });

问题是,该插件在页面加载后处于活动状态(我认为这是因为触发器('mouseup'))并显示结果丢失。

选择中是否有任何触发器使其不活动,或者可能是另一个触发器。 感谢。

1 个答案:

答案 0 :(得分:0)

通过编写所选的订单插件解决了问题。