This article mainly introduces the method to solve the bug of immediately hiding the bootstrap drop-down menu when clicked. It has certain reference value. If you are interested, you can learn about it
Yesterday, I used jQuery and bootstrap to implement the drop-down menu check box. Today, I combined the completed demo into the project and found a bug. When clicking on the bank checkbox, the dropdown-menu p will be hidden immediately, which means that only one can be selected at a time.
This should be the reason for event propagation. The code is modified as follows:
var banks = $('.all').siblings().children(); $('.all>input').click(function() { var flag = $(this).prop('checked'); banks.prop('checked', flag); }) // 阻止事件传播, 否则在点击复选框的时候,dropdown-menu这个p会立即隐藏 $('.dropdown-menu label').click(function(e) { e.stopPropagation(); }); banks.click(function() { // 如果有一个没选中,全选按钮不选中 // 如果全部选中,全选按钮被选中 var num = 0; banks.each(function() { if ($(this).prop("checked")) { num++; } }) if (num == banks.length) { $('.all>input').prop('checked', true); } else { $('.all>input').prop('checked', false); } })
In addition, new The added function is that when clicking the "Save" button, the selected bank name needs to be concatenated with commas into a string and passed to the backend. This part is relatively simple, the code is as follows:
// 在提交时,获取选中的所有值,并把这些值拼接成字符串 $('.submit').click(function() { var bankArr = []; banks.each(function() { if ($(this).prop("checked")) { bankArr.push($(this).val()); } }); var bankStr = bankArr.join(','); console.log(bankStr); })
The above is the detailed content of How to solve the problem when clicking on the bootstrap drop-down menu to hide it immediately. For more information, please follow other related articles on the PHP Chinese website!