jQuery / js使用多选小部件阻止重复复选框出现

时间:2014-01-28 16:24:25

标签: javascript jquery jquery-ui

背景/目前

我正在使用正在从javascript文件填充的Eric Hynds jQuery MultiSelect Widget。在我的小提琴中,用户只能检查两个小部件之间的2个选项。一旦用户选择了一个选项,如果选中了相应的Main,则将带有值的动态复选框附加到Main。用户还可以先检查Main或选项,然后仍然动态显示在相应的Main。

问题如果在已检查的Main1下添加了Option1,则检查Main2还会向Main1添加副本。请看我的小提琴如何工作和问题我正在努力解决。 http://jsfiddle.net/3u7Xj/94/

$(document).ready(function() {
    $(".multiselect").multiselect({
        header: "Choose up to 5 areas total",
        click: function (event, ui) {
             var number1=$("#MDCselect").children(":checked").length,
                number2=$("#Clinicalselect").children(":checked").length;

            if (ui.checked && ((number1 + number2 >=2) || $(this).children(":checked").length >= 2)) {
                return false;
            }

            var lbl = ui.value;
            if(ui.checked){
                var ctrl = '<input type="checkbox" name="chk" checked="checked" class="chk" id="'+lbl+'">';
                $("[id^=id]:checked").each(function(){
                    $(this).nextAll('.holder:first').append('<div>'+ctrl+lbl+'</div>');    
                });
            }
            else {
                $("[id^=id]:checked").each(function(){
                    $(this).nextAll('.holder:first').find('#' + lbl).parent().remove();
                })
            }
        },
        selectedList:5
    });
    $(".checkers").click(function() {        
        if(!$(this).is(':checked')) {
            $(this).nextAll('.holder:eq(0)').find('div input').parent().remove();
        }
        else {
            var checkedOnes = $('#MDCselect').nextAll('.ui-multiselect-menu').find('ul li input:checked');
            for(var i = 0; i < checkedOnes.length; i++) {
                var lbl = checkedOnes.eq(i).attr('value');
                var ctrl = '<input type="checkbox" name="chk" checked="checked" class="chk" id="'+lbl+'">';
                $("[id^=id]:checked").each(function(){
                    $(this).nextAll('.holder:first').append('<div>'+ctrl+lbl+'</div>');    
                });
            }
        }
    });
});

1 个答案:

答案 0 :(得分:1)

这是你需要的吗?

$(".holder").html(""); // Added to line #31

http://jsfiddle.net/ergec/b2CsB/