Bootstrap thả xuống nhiều lựa chọn với hộp kiểm
nhịp. multiselect-native-select { vị trí. khoảng} tương đối. multiselect-native-select select { đường viền. 0. quan trọng; . thẳng(0 0 0 0). quan trọng; . 1px. quan trọng; . -1px -1px -1px -3px. quan trọng; . ẩn giấu. quan trọng; . 0. quan trọng; . tuyệt đối. quan trọng; . 1px. quan trọng; . 50%; . 30px }. multiselect-container { vị trí. tuyệt đối; . không ai; . 0; . 0 }. multiselect-container. nhóm đầu vào { lề. 5px }. multiselect-container>li { đệm. 0 }. multiselect-container>li>a. nhãn nhiều lựa chọn { font-weight. 700 }. multiselect-container>li. nhãn nhóm nhiều lựa chọn { lề. 0; . 3px 20px 3px 20px; . 100%; . 700 }. multiselect-container>li. multiselect-group-clickable nhãn { con trỏ. con trỏ}. multiselect-container>li>a { đệm. 0 }. multiselect-container>li>a>nhãn { lề. 0; . 100%; . con trỏ; . 400; . 3px 0 3px 30px }. multiselect-container>li>a>nhãn. Đài,. multiselect-container>li>a>nhãn. hộp kiểm { lề. 0 }. multiselect-container>li>a>nhãn>input[type=checkbox] { lề-dưới. 5px }. nhóm btn>. nhóm btn. con thứ n(2)>. nhiều lựa chọn. btn { bán kính đường viền trên cùng bên trái. 4px; . 4px }. biểu mẫu nội tuyến. nhãn vùng chứa nhiều lựa chọn. hộp kiểm,. biểu mẫu nội tuyến. nhãn vùng chứa nhiều lựa chọn. đài phát thanh { đệm. 3px 20px 3px 40px }. biểu mẫu nội tuyến. multiselect-container li một nhãn. đầu vào hộp kiểm [loại=hộp kiểm],. biểu mẫu nội tuyến. multiselect-container li một nhãn. đầu vào radio[type=radio] { lề trái. -20px; . 0 } Show /** * Đa lựa chọn Bootstrap (https. //github. com/davidstutz/bootstrap-multiselect) * * Giấy phép Apache, Phiên bản 2. 0. * Bản quyền (c) 2012 - 2015 David Stutz * * Được cấp phép theo Giấy phép Apache, Phiên bản 2. 0 ("Giấy phép"); . Bạn có thể lấy * bản sao của Giấy phép tại http. //www. apache. org/giấy phép/GIẤY PHÉP-2. 0 * * Trừ khi được luật hiện hành yêu cầu hoặc được đồng ý bằng văn bản, phần mềm * được phân phối theo Giấy phép sẽ được phân phối trên CƠ SỞ "NGUYÊN TRẠNG", KHÔNG CÓ * BẢO ĐẢM HOẶC ĐIỀU KIỆN DƯỚI BẤT KỲ HÌNH THỨC nào, rõ ràng hay ngụ ý. Xem * Giấy phép để biết các quyền và giới hạn quản lý ngôn ngữ cụ thể * trong Giấy phép. * * Giấy phép 3 khoản BSD. * Bản quyền (c) 2012 - 2015 David Stutz * Bảo lưu mọi quyền. * * Việc phân phối lại và sử dụng ở dạng mã nguồn và dạng nhị phân, có hoặc không có sửa đổi *, được phép với điều kiện đáp ứng các điều kiện sau. * - Việc phân phối lại mã nguồn phải giữ lại thông báo bản quyền ở trên, * danh sách các điều kiện này và tuyên bố từ chối trách nhiệm sau đây. * - Các bản phân phối lại ở dạng nhị phân phải sao chép thông báo bản quyền ở trên, * danh sách các điều kiện này và tuyên bố từ chối trách nhiệm sau đây trong tài liệu * và/hoặc các tài liệu khác được cung cấp cùng với bản phân phối. * - Không được phép sử dụng tên của David Stutz cũng như tên của những người đóng góp cho nó * để xác nhận hoặc quảng bá các sản phẩm bắt nguồn từ phần mềm này mà không có * sự cho phép cụ thể trước bằng văn bản. * * PHẦN MỀM NÀY ĐƯỢC CUNG CẤP BỞI NHỮNG NGƯỜI GIỮ BẢN QUYỀN VÀ CÁC ĐÓNG GÓP "NGUYÊN TRẠNG" * VÀ BẤT KỲ BẢO ĐẢM NÀO RÕ RÀNG HAY NGỤ Ý, BAO GỒM NHƯNG KHÔNG GIỚI HẠN Ở, * CÁC BẢO ĐẢM NGỤ Ý VỀ KHẢ NĂNG BÁN VÀ TÍNH PHÙ HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ * MỤC ĐÍCH KHÔNG ĐƯỢC TỪ CHỐI. TRONG MỌI TRƯỜNG HỢP NGƯỜI GIỮ BẢN QUYỀN HOẶC * NGƯỜI ĐÓNG GÓP PHẢI CHỊU TRÁCH NHIỆM PHÁP LÝ CHO BẤT KỲ THIỆT HẠI TRỰC TIẾP, GIÁN TIẾP, NGẪU NHIÊN, ĐẶC BIỆT, * ĐIỂN HÌNH HOẶC DỮ LIỆU (BAO GỒM NHƯNG KHÔNG GIỚI HẠN Ở * VIỆC MUA HÀNG HÓA HOẶC DỊCH VỤ THAY THẾ; MẤT SỬ DỤNG, DỮ LIỆU, . */. function ($) { "dùng nghiêm ngặt"; // jshint ;_; . == 'không xác định' && ko. ràng buộcHandlers &&. ko. ràng buộcHandlers. nhiều lựa chọn) { ko. ràng buộcHandlers. nhiều lựa chọn = { sau. ['tùy chọn', 'giá trị', 'tùy chọn đã chọn', 'bật', 'tắt'], init. function(element, valueAccessor, allBindings, viewModel, bindingContext) { var $element = $(element); . toJS(valueAccessor()); . đa lựa chọn (cấu hình); . has('options')) { var options = allBindings. get('tuỳ chọn'); . isObservable(options)) {ko. tính toán ({ đọc. hàm () { tùy chọn (); . dữ liệu ('nhiều lựa chọn'); . updateOriginalOptions();//Không chắc điều này có lợi như thế nào. phần tử $. multiselect('xây dựng lại'); . thành phần }); . // Cần một số cách để biết liệu chúng được kích hoạt do chúng tôi hay do thay đổi bên ngoài. // Nó không lặp nhưng tốn công xử lý. nếu (tất cảBindings. has('value')) { var value = allBindings. nhận ('giá trị'); . isObservable(value)) {ko. tính toán ({ đọc. hàm () { giá trị (); . chọn nhiều ('làm mới'); . thành phần }). gia hạn ({ rateLimit. 100, thông báo WhenChangesStop. thật }); . // Không chắc hiệu suất có tốt hơn khi sử dụng 'select' và 'deselect'. nếu (tất cảBindings. has('sSelectedOptions')) { var selectOptions = allBindings. get('SelectedOptions'); . isObservable (đã chọnOptions)) { ko. tính toán ({ đọc. function() { tùy chọn đã chọn(); . chọn nhiều ('làm mới'); . thành phần }). gia hạn ({ rateLimit. 100, thông báo WhenChangesStop. thật }); . chọn nhiều ('bật'); . đa lựa chọn ('vô hiệu hóa'); . has('enable')) { var enable = allBindings. get('kích hoạt'); . isObservable(enable)) { ko. tính toán ({ đọc. function () { setEnabled(enable()); . thành phần }). gia hạn ({ rateLimit. 100, thông báo WhenChangesStop. thật }); . has('disable')) { var disable = allBindings. get('vô hiệu hoá'); . isObservable(vô hiệu hóa)) { ko. tính toán ({ đọc. hàm () { setEnabled (. vô hiệu hóa()); . thành phần }). gia hạn ({ rateLimit. 100, thông báo WhenChangesStop. thật }); . vô hiệu hóa); . đồ dùng. domNodeDisposal. addDisposeCallback(phần tử, hàm() { $element. chọn nhiều ('hủy'); . function(element, valueAccessor, allBindings, viewModel, bindingContext) { var $element = $(element); . toJS(valueAccessor()); . nhiều lựa chọn ('setOptions', cấu hình); . multiselect('xây dựng lại'); . chiều dài; . * * @param {jQuery} select * @param {Object} options * @returns {Multiselect} */ function Multiselect(select, options) { cái này. $chọn = $(chọn); . tùy chọn = cái này. hợp nhất($). mở rộng ({}, tùy chọn, điều này. $chọn. dữ liệu())); . $chọn. attr("data-placeholder")) { cái này. tùy chọn. nonSelectedText = cái này. $chọn. dữ liệu ("giữ chỗ"); . // Chúng ta phải sao chép để tạo một tham chiếu mới. cái này. originalOptions = cái này. $chọn. bản sao () [0]. tùy chọn; . truy vấn = ''; . searchTimeout = null; . lastToggledInput = null; . tùy chọn. nhiều = cái này. $chọn. attr('multiple') === "multiple"; . tùy chọn. trênThay đổi = $. proxy (cái này. tùy chọn. onChange, cái này); . tùy chọn. onSelectAll = $. proxy (cái này. tùy chọn. onSelectAll, cái này); . tùy chọn. onDeselectAll = $. proxy (cái này. tùy chọn. onDeselectAll, cái này); . tùy chọn. onDropdownShow = $. proxy (cái này. tùy chọn. onDropdownShow, cái này); . tùy chọn. onDropdownHide = $. proxy (cái này. tùy chọn. onDropdownHide, cái này); . tùy chọn. onDropdownShown = $. proxy (cái này. tùy chọn. onDropdownShown, cái này); . tùy chọn. onDropdownHidden = $. proxy (cái này. tùy chọn. onDropdownHidden, cái này); . tùy chọn. onInitialized = $. proxy (cái này. tùy chọn. onInitialized, cái này); . tùy chọn. onFiltering = $. proxy (cái này. tùy chọn. onFiltering, cái này); . cái này. buildContainer(); . buildButton(); . buildDropdown(); . buildSelectAll(); . buildDropdownOptions(); . buildFilter(); . cập nhậtButtonText(); . updateSelectAll(true); . tùy chọn. enableClickableOptGroups && cái này. tùy chọn. nhiều) { cái này. cập nhậtOptGroups(); . tùy chọn. wasDisabled = cái này. $chọn. prop ('bị vô hiệu hóa'); . tùy chọn. disableIfEmpty && $('option', this. $chọn). chiều dài <= 0) { cái này. vô hiệu hóa(); . $chọn. quấn (''). sau đây. $container); . tùy chọn. onInitialized (cái này. $chọn, cái này. $container); . nguyên mẫu = { mặc định. { /** * Chức năng văn bản mặc định sẽ in 'Không được chọn' trong trường hợp không có tùy chọn * nào được chọn hoặc danh sách các tùy chọn đã chọn có độ dài * gồm 3 tùy chọn đã chọn. * * @param {jQuery} tùy chọn * @param {jQuery} chọn * @returns {String} */ buttonText. chức năng (tùy chọn, chọn) { if (điều này. văn bản bị vô hiệu hóa. chiều dài > 0 && (chọn. chống đỡ ('đã tắt'). (tùy chọn. chiều dài == 0 && cái này. disableIfEmpty))) { trả lại cái này. văn bản bị vô hiệu hóa; . chiều dài === 0) { trả lại cái này. văn bản không được chọn; . tất cả SelectedText && tùy chọn. chiều dài === $('option', $(select)). độ dài && $('tùy chọn', $(chọn)). chiều dài. == 1 && cái này. nhiều) { if (cái này. selectAllNumber) { trả lại cái này. allSelectedText + ' (' + tùy chọn. chiều dài + ')'; . allSelectedText; . chiều dài > cái này. numberDisplayed) { tùy chọn trả lại. độ dài + ' ' + cái này. nSelectedText; . dấu phân cáchVăn bản; . each(function() { var label = ($(this). attr('nhãn'). == không xác định)? . attr('nhãn'). $(cái này). chữ(); . chất nền(0, đã chọn. chiều dài - cái này. dấu phân cáchVăn bản. chiều dài); . * * @param {jQuery} tùy chọn * @param {jQuery} select * @returns {@exp;selected@call;substr} */ buttonTitle. chức năng (tùy chọn, chọn) { if (tùy chọn. chiều dài === 0) { trả lại cái này. văn bản không được chọn; . dấu phân cáchVăn bản; . mỗi (hàm () { var nhãn = ($(cái này). attr('nhãn'). == không xác định)? . attr('nhãn'). $(cái này). chữ(); . chất nền(0, đã chọn. chiều dài - cái này. dấu phân cáchVăn bản. chiều dài); . hàm (tùy chọn) { trả về sai; . * * @param phần tử {jQuery} * @returns {String} */ optionLabel. hàm (phần tử){ trả về $ (phần tử). attr('nhãn'). $(phần tử). chữ(); . * * @param phần tử {jQuery} * @returns {String} */ optionClass. hàm (phần tử) { return $ (phần tử). attr('lớp'). ''; . * * Không được kích hoạt khi chọn/bỏ chọn các tùy chọn theo cách thủ công. * * @param {jQuery} tùy chọn * @param {Boolean} đã chọn */ onChange. chức năng (tùy chọn, đã chọn) { }, /** * Được kích hoạt khi danh sách thả xuống được hiển thị. * * @param {jQuery} sự kiện */ onDropdownShow. function(event) { }, /** * Được kích hoạt khi danh sách thả xuống bị ẩn. * * @param {jQuery} sự kiện */ onDropdownHide. function(event) { }, /** * Được kích hoạt sau khi danh sách thả xuống được hiển thị. * * @param {jQuery} sự kiện */ onDropdownShown. function(event) { }, /** * Được kích hoạt sau khi danh sách thả xuống bị ẩn. * * @param {jQuery} sự kiện */ onDropdownHidden. chức năng (sự kiện) { }, /** * Được kích hoạt khi chọn tất cả. */ onSelectAll. function() { }, /** * Được kích hoạt khi bỏ chọn tất cả. */ onDeselectAll. function() { }, /** * Kích hoạt sau khi khởi tạo. * * @param {jQuery} $select * @param {jQuery} $container */ onInitialized. function($select, $container) { }, /** * Được kích hoạt khi lọc. * * @param {jQuery} $filter */ onFiltering. hàm($filter) { }, enableHTML. sai, lớp nút. 'btn btn-default', lớp kế thừa. sai, chiều rộng nút. 'tự động', nútContainer. '').after(this.$container); this.options.onInitialized(this.$select, this.$container); } Multiselect.prototype = { defaults: { /** * Default text function will either print 'None selected' in case no * option is selected or a list of the selected options up to a length * of 3 selected options. * * @param {jQuery} options * @param {jQuery} select * @returns {String} */ buttonText: function(options, select) { if (this.disabledText.length > 0 && (select.prop('disabled') || (options.length == 0 && this.disableIfEmpty))) { return this.disabledText; } else if (options.length === 0) { return this.nonSelectedText; } else if (this.allSelectedText && options.length === $('option', $(select)).length && $('option', $(select)).length !== 1 && this.multiple) { if (this.selectAllNumber) { return this.allSelectedText + ' (' + options.length + ')'; } else { return this.allSelectedText; } } else if (options.length > this.numberDisplayed) { return options.length + ' ' + this.nSelectedText; } else { var selected = ''; var delimiter = this.delimiterText; options.each(function() { var label = ($(this).attr('label') !== undefined) ? $(this).attr('label') : $(this).text(); selected += label + delimiter; }); return selected.substr(0, selected.length - this.delimiterText.length); } }, /** * Updates the title of the button similar to the buttonText function. * * @param {jQuery} options * @param {jQuery} select * @returns {@exp;selected@call;substr} */ buttonTitle: function(options, select) { if (options.length === 0) { return this.nonSelectedText; } else { var selected = ''; var delimiter = this.delimiterText; options.each(function () { var label = ($(this).attr('label') !== undefined) ? $(this).attr('label') : $(this).text(); selected += label + delimiter; }); return selected.substr(0, selected.length - this.delimiterText.length); } }, checkboxName: function(option) { return false; // no checkbox name }, /** * Create a label. * * @param {jQuery} element * @returns {String} */ optionLabel: function(element){ return $(element).attr('label') || $(element).text(); }, /** * Create a class. * * @param {jQuery} element * @returns {String} */ optionClass: function(element) { return $(element).attr('class') || ''; }, /** * Triggered on change of the multiselect. * * Not triggered when selecting/deselecting options manually. * * @param {jQuery} option * @param {Boolean} checked */ onChange : function(option, checked) { }, /** * Triggered when the dropdown is shown. * * @param {jQuery} event */ onDropdownShow: function(event) { }, /** * Triggered when the dropdown is hidden. * * @param {jQuery} event */ onDropdownHide: function(event) { }, /** * Triggered after the dropdown is shown. * * @param {jQuery} event */ onDropdownShown: function(event) { }, /** * Triggered after the dropdown is hidden. * * @param {jQuery} event */ onDropdownHidden: function(event) { }, /** * Triggered on select all. */ onSelectAll: function() { }, /** * Triggered on deselect all. */ onDeselectAll: function() { }, /** * Triggered after initializing. * * @param {jQuery} $select * @param {jQuery} $container */ onInitialized: function($select, $container) { }, /** * Triggered on filtering. * * @param {jQuery} $filter */ onFiltering: function($filter) { }, enableHTML: false, buttonClass: 'btn btn-default', inheritClass: false, buttonWidth: 'auto', buttonContainer: ' ', dropRight. sai, dropUp. sai, lớp đã chọn. 'đang hoạt động', // Chiều cao tối đa của dropdown menu. // Nếu vượt quá chiều cao tối đa, thanh cuộn sẽ được hiển thị. chiều cao tối đa. sai, bao gồmSelectAllOption. sai, bao gồmSelectAllIfMoreThan. 0, chọnTất cả văn bản. 'Chọn tất cả', chọnAllValue. 'multiselect-all', selectAllName. sai, chọnTất cảSố. đúng, chọnAllJustVisible. đúng, kích hoạt Lọc. sai, enableCaseInsensitiveFiltering. sai, enableFullValueFiltering. sai, enableClickableOptGroups. sai, enableCollapsibleOptGroups. sai, bộ lọcPlaceholder. 'Tìm kiếm', // các tùy chọn có thể. 'văn bản', 'giá trị', 'cả hai' bộ lọcHành vi. 'văn bản', bao gồmFilterClearBtn. đúng, ngăn chặnInputChangeEvent. sai, văn bản không được chọn. 'Không được chọn', nSelectedText. 'đã chọn', tất cả văn bản được chọn. 'Tất cả đã chọn', sốHiển thị. 3, tắt IfEmpty. sai, bị vô hiệu hóa. '', dấu phân cáchVăn bản. ', ', mẫu. { cái nút. '', u. '', lọc. ' Cách tạo đaCách sử dụng. . Bao gồm biểu định kiểu 'multiselect. css' trong phần đầu của trang web. . Tạo phần tử chọn 'nhiều' bình thường trên trang web. . Bao gồm tệp JavaScript 'multiselect. . Kích hoạt plugin và hoàn tất. . phương pháp API Làm cách nào để chọn nhiều hộp kiểm trong Bootstrap?Có thể dễ dàng chuyển đổi lựa chọn HTML đơn giản thành nút Bootstrap bằng cách sử dụng Bootstrap-multiselect khi chạy . Khi chúng tôi nhấp vào nút đó, menu thả xuống sẽ được mở với các tùy chọn có sẵn dưới dạng hộp kiểm. Sử dụng tùy chọn đa lựa chọn, người dùng có thể chọn nhiều tùy chọn cùng một lúc.
Làm cách nào để tạo nhiều lựa chọn thả xuống trong Bootstrap 5?. Cách tạo đaBắt đầu . Liên kết các tập tin cần thiết. Đầu tiên, thư viện jQuery cần được đưa vào. . Tạo một Lựa chọn. Bây giờ, chỉ cần sử dụng HTML để tạo đầu vào đã chọn mà bạn muốn chuyển thành đa lựa chọn. . Gọi trình cắm. Cuối cùng, chỉ cần gọi plugin theo lựa chọn của bạn |