【发布时间】:2021-01-16 03:15:47
【问题描述】:
我在弹出框内有一些多选,但是每当弹出框关闭时,多选就会被删除,有没有办法将多选放在弹出框内而不会丢失所选数据?
在我单击按钮时创建多选的代码中,我相信这可能是问题的原因,但我找不到另一种将多选添加到弹出窗口的方法。我遵循了这个问题的答案之一:
https//stackoverflow.com/questions/ 22409391/how-to-put-a-multiselect-in-a-popover
这是我的代码:
let popover_filters = '<div id="popover_filters" class="text-center">'+
'<select id="activity_filter_sector" class="form-control" name="multiselect[]" multiple="multiple" alt="setor" required>'+
'<option value="0">Contábil e Financeiro</option>'+
'<option value="1">Fiscal e Tributário</option>'+
'<option value="2">Pessoal e Trabalhista</option>'+
'<option value="3">Gestão e controladoria</option>'+
'</select>'+
'<select id="activity_filter_company" class="form-control" name="multiselect[]" multiple="multiple" alt="empresa" required>'+
'<option value="0">Contábil e Financeiro</option>'+
'<option value="1">Fiscal e Tributário</option>'+
'<option value="2">Pessoal e Trabalhista </option>'+
'<option value="3">Gestão e controladoria Gestão e controladoria Gestão e controladoria</option>'+
'</select>'+
'<select id="activity_filter_status" class="form-control" name="multiselect[]" multiple="multiple" alt="status" required>'+
'<option value="0">agendado</option>'+
'<option value="1">concluído</option>'+
'<option value="2">pendente</option>'+
'<option value="3">em atraso</option>'+
'</select>'+
'<select id="activity_filter_users" class="form-control" name="multiselect[]" multiple="multiple" alt="usuários" required>'+
'<option value="0">Contábil e Financeiro</option>'+
'<option value="1">Fiscal e Tributário</option>'+
'<option value="2">Pessoal e Trabalhista</option>'+
'<option value="3">Gestão e controladoria</option>'+
'</select>'+
'</div>'
$('#activity_filter_btn').popover({
html:true, placement : 'bottom', content: popover_filters, trigger:'click',
}).on('click',function () {
$('#activity_filter_sector').multiselect()
$('#activity_filter_company').multiselect()
$('#activity_filter_status').multiselect()
$('#activity_filter_users').multiselect()
}).on("hide.bs.popover", function(){
let total = 0
total += $('#activity_filter_sector').val().length
total += $('#activity_filter_company').val().length
total += $('#activity_filter_status').val().length
total += $('#activity_filter_users').val().length
if (total >0){
$(this).addClass('btn-primary')
$(this).removeClass('btn-default')
}else{
$(this).addClass('btn-default')
$(this).removeClass('btn-primary')
}
});
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<!-- Bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<!-- multiselect -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.15/css/bootstrap-multiselect.css" integrity="sha512-EvvoSMXERW4Pe9LjDN9XDzHd66p8Z49gcrB7LCUplh0GcEHiV816gXGwIhir6PJiwl0ew8GFM2QaIg2TW02B9A==" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.15/js/bootstrap-multiselect.min.js" integrity="sha512-aFvi2oPv3NjnjQv1Y/hmKD7RNMendo4CZ2DwQqMWzoURKxcqAoktj0nNG4LU8m23+Ws9X5uVDD4OXLqpUVXD5Q==" crossorigin="anonymous"></script>
<button id="activity_filter_btn"class="mt-3 btn btn btn-default"><i class="fas fa-filter mr-2"></i>Filtrar</button>
【问题讨论】:
-
我认为您的预感是正确的,它正在重置,因为每次关闭弹出框时元素都会被销毁并重新创建,从而有效地将所有多选设置回默认值。
标签: javascript jquery twitter-bootstrap-3 popover bootstrap-multiselect