$(document).ready(function () { $(document).on("click", ".MultiCheckBox", function () { var detail = $(this).next(); detail.show(); }); $(document).on("click", ".MultiCheckBoxDetailHeader input", function (e) { e.stopPropagation(); var hc = $(this).prop("checked"); $(this).closest(".MultiCheckBoxDetail").find(".MultiCheckBoxDetailBody input").prop("checked", hc); $(this).closest(".MultiCheckBoxDetail").next().UpdateSelect(); }); $(document).on("click", ".MultiCheckBoxDetailHeader", function (e) { var inp = $(this).find("input"); var chk = inp.prop("checked"); inp.prop("checked", !chk); $(this).closest(".MultiCheckBoxDetail").find(".MultiCheckBoxDetailBody input").prop("checked", !chk); $(this).closest(".MultiCheckBoxDetail").next().UpdateSelect(); }); $(document).on("click", ".MultiCheckBoxDetail .cont input", function (e) { e.stopPropagation(); $(this).closest(".MultiCheckBoxDetail").next().UpdateSelect(); var val = ($(".MultiCheckBoxDetailBody input:checked").length == $(".MultiCheckBoxDetailBody input").length) $(".MultiCheckBoxDetailHeader input").prop("checked", val); }); $(document).on("click", ".MultiCheckBoxDetail .cont", function (e) { var inp = $(this).find("input"); var chk = inp.prop("checked"); inp.prop("checked", !chk); var multiCheckBoxDetail = $(this).closest(".MultiCheckBoxDetail"); var multiCheckBoxDetailBody = $(this).closest(".MultiCheckBoxDetailBody"); multiCheckBoxDetail.next().UpdateSelect(); var val = ($(".MultiCheckBoxDetailBody input:checked").length == $(".MultiCheckBoxDetailBody input").length) $(".MultiCheckBoxDetailHeader input").prop("checked", val); }); $(document).mouseup(function (e) { var container = $(".MultiCheckBoxDetail"); if (!container.is(e.target) && container.has(e.target).length === 0) { container.hide(); } }); }); var defaultMultiCheckBoxOption = { width: '220px', defaultText: 'Select Below', height: '200px' }; jQuery.fn.extend({ CreateMultiCheckBox: function (options) { var localOption = {}; localOption.width = (options != null && options.width != null && options.width != undefined) ? options.width : defaultMultiCheckBoxOption.width; localOption.defaultText = (options != null && options.defaultText != null && options.defaultText != undefined) ? options.defaultText : defaultMultiCheckBoxOption.defaultText; localOption.height = (options != null && options.height != null && options.height != undefined) ? options.height : defaultMultiCheckBoxOption.height; this.hide(); this.attr("multiple", "multiple"); var divSel = $("
" + localOption.defaultText + "
").insertBefore(this); divSel.css({ "width": localOption.width }); var detail = $("
Select All
").insertAfter(divSel); detail.css({ "width": parseInt(options.width) + 10, "max-height": localOption.height }); var multiCheckBoxDetailBody = detail.find(".MultiCheckBoxDetailBody"); this.find("option").each(function () { var val = $(this).attr("value"); if (val == undefined) val = ''; multiCheckBoxDetailBody.append("
" + $(this).text() + "
"); }); multiCheckBoxDetailBody.css("max-height", (parseInt($(".MultiCheckBoxDetail").css("max-height")) - 28) + "px"); }, UpdateSelect: function () { var arr = []; this.prev().find(".mulinput:checked").each(function () { arr.push($(this).val()); }); this.val(arr); }, });