gpt4 book ai didi

javascript - Bootstrap popover 不保存 ckeckboxes

转载 作者:行者123 更新时间:2023-11-29 17:05:10 24 4
gpt4 key购买 nike

我需要在 bootstrap 3 上计算弹出内容上的 :checked 复选框。

问题是当我更改复选框并关闭弹出窗口时它不会保存。我尝试重新安装/销毁弹出窗口并动态更改 content 选项,但没有结果。

我还尝试创建空数组并手动计算选中的复选框,推送每个新的检查到数组,但再次没有结果,这是非常困难的方法。

js:

$(function () {
$('.item').popover({
placement: 'bottom',
html: true,
content: function () {
return $(this).find('.filters').html();
}
});

$('#count').click(function() {
var filter = $('.item input[type=checkbox]:checked').map(function () {
return this.value;
}).get();

$('#res').text(filter);
});
});

html:

<div class="item">
<a href="#" onclick="return false;" class="btn btn-primary">click for popover</a>
<div class="filters">
<ul class="list-unstyled">
<li>
<input type="checkbox" value="1" checked="checked" id="filter1">
<label for="filter1">Filter 1</label>
</li>
<li>
<input type="checkbox" value="2" checked="checked" id="filter2">
<label for="filter2">Filter 2</label>
</li>
<li>
<input type="checkbox" value="3" id="filter3">
<label for="filter2">Filter 3</label>
</li>
</ul>
</div>
</div>

<br>
<a href="#" onclick="return false;" id="count">count</a>
<div id="res"></div>

CSS:

.filters {
display: none;
}
.popover-content {
width: 100px;
}

更新:http://jsfiddle.net/sirjay/0vetvfpz/

最佳答案

当您创建弹出窗口时,您复制了 .filters div 的内容,这意味着您拥有它两次。一个是隐藏的,因为它位于 .filters div 中,隐藏是因为.过滤器{
显示:无;
}

还有一个在您的弹出窗口中可见。

当您计算时,您实际上是在计算不可见的复选框,而不是弹出窗口中的复选框。弹出窗口是在 .item div 之外创建的,因此与 .item input[type=checkbox]:checked 选择器不匹配。将其更改为 .popover input[type=checkbox]:checked 可能会执行您想要的操作。

更新

我做了一些研究,发现创建者并没有想到这个用例。所以做起来真的很棘手。但我已经设法为您找到解决方案:

$(function () {
$('.item').popover({
placement: 'bottom',
html: true,
content: function () {
return $(this).find('.filters').html();
}
});

//Magic
$(".item").on("shown.bs.popover",function(){
$(".popover-content input").on("change",function(){
if(this.checked){
this.setAttribute("checked","checked");
}else{
this.removeAttribute("checked");
}
$(".filters").html($(".popover-content").html());
});
});


$('#count').click(function() {
var filter = $('.item input[type=checkbox]:checked').map(function () {
return this.value;
}).get();

$('#res').text(filter);
});
});

关于javascript - Bootstrap popover 不保存 ckeckboxes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25196155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com