window.onload = (event) => {
initMultiselect();
};
function initMultiselect() {
checkboxStatusChange();
document.addEventListener("click", function(evt) {
var flyoutElement = document.getElementById('myMultiselect'),
targetElement = evt.target; // clicked element
do {
if (targetElement == flyoutElement) {
// This is a click inside. Do nothing, just return.
//console.log('click inside');
return;
}
// Go up the DOM
targetElement = targetElement.parentNode;
} while (targetElement);
// This is a click outside.
toggleCheckboxArea(true);
//console.log('click outside');
});
}
function checkboxStatusChange() {
var multiselect = document.getElementById("mySelectLabel");
var multiselectOption = multiselect.getElementsByTagName('option')[0];
var values = [];
var checkboxes = document.getElementById("mySelectOptions");
var checkedCheckboxes = checkboxes.querySelectorAll('input[type=checkbox]:checked');
for (const item of checkedCheckboxes) {
var checkboxValue = item.getAttribute('value');
values.push(checkboxValue);
}
var dropdownValue = "Nothing is selected";
if (values.length > 0) {
dropdownValue = values.join(', ');
}
multiselectOption.innerText = dropdownValue;
}
function toggleCheckboxArea(onlyHide = false) {
var checkboxes = document.getElementById("mySelectOptions");
var displayValue = checkboxes.style.display;
if (displayValue != "block") {
if (onlyHide == false) {
checkboxes.style.display = "block";
}
} else {
checkboxes.style.display = "none";
}
}
8条答案
按热度按时间v7pvogib1#
带有复选框和jQuery的多个下拉菜单。
mwngjboj2#
只需使用bootstrap-multiselect,您可以使用多选选项和更多特性填充下拉列表。
有关文档和教程,您可以访问以下链接
https://www.npmjs.com/package/bootstrap-multiselect
http://davidstutz.de/bootstrap-multiselect/
cbjzeqam3#
下面是一个简单的下拉列表:
x6492ojm4#
这不能只在HTML中完成(将表单元素转换为
option
元素)。或者您可以只使用标准的
select multiple
字段。hof1towb5#
goucqfw66#
我必须提前说明,Naveen的答案给了我很大的启发,所以我根据这个答案创建了自己的解决方案。
以下3个功能是我们多选的基础:
一些改进包括:
bootstrap 5
设计我还尝试坚持使用原生JS(没有jQuery),并尽可能多地使用原生
Bootstrap 5
样式视频如下:
我没有打算做一个现成的解决方案,将适合每个人的需要,所以请调整它,以您的喜好。我个人期待着增加一个搜索功能。
小提琴:
kmbjn2e37#
你总是可以使用
multiple
或者multiple = "true"
选项和select标签,但是有一个jquery插件使它更漂亮,它叫做chosed,可以在here中找到。This fiddle-example might help you to get started
谢谢你。
5ktev3wc8#
非常简单的代码,带有Bootstrap和
JQuery
,没有任何额外的javascript
代码:超文本:
https://codepen.io/funkycram/pen/joVYBv