javascript - Select2 下拉菜单在 Bootstrap 弹出窗口中无法正常工作
问题描述
我正在尝试将 select2 下拉菜单放在我的弹出窗口中 - 当我第一次打开弹出窗口时,select2 下拉菜单会正常呈现,但如果我关闭它并再次打开 - 它会呈现 2 个 select2 下拉菜单,其中一个是不可点击的:
我已经尝试过这里z-index
的解决方案和这里的解决方案,但它们没有用。我还读到 select2 在 Bootstrap 模态中无法正常工作,并且还尝试使用属性渲染它 - 也没有用。dropdownParent
我的 HTML:
<div class="actions-row mb-5">
<button type="button" class="btn popover-toggle add-to-program-popover" data-placement="bottom">
Add to program
</button>
<div class="program-container" style="display: none">
<select name="movement-program-select" class="movement-program-select">
<option value=""></option>
<option value="Program 1">Program 1</option>
<option value="Program 2">Program 2</option>
<option value="Program 3">Program 3</option>
</select>
<i class="fa fa-floppy-o add-to-program" aria-hidden="true"></i>
<hr>
<a class="create-new-program">
<i class="fa fa-plus-square-o add-item"></i>
Create new program</a>
</div>
</div>
这是我的 JS 代码:
$('button.add-movement-to-program').on('click', function(e) {
$('.add-to-program-table-container').show();
});
$('button.add-to-program-popover').popover({
container: 'main',
html: true,
content: function() {
return $('.program-container').html();
}
});
$('button.add-to-program-popover').click(function() {
// console.log(1);
// if (!$('.movement-program-select').hasClass("select2-hidden-accessible")) {
// console.log(2);
$('.movement-program-select').select2({
container: 'body',
width: "100%",
dropdownParent: $('.popover-content')
});
// }
});
关于如何修复它还有其他变体吗?
这是我的 JSFiddle 的链接:http : //jsfiddle.net/fpk047rh/1/
解决方案
您想使用show 事件来定位select
弹出框内的元素。
这是一个例子
HTML:
<div id="wrapper">
<button type="button" id="myButton" class="btn btn-lg">Click to toggle popover</button>
<div id="form" style="display:none;">
<select class="select-program" name="program">
<option value=""></option>
<option value="Program 1">Program 1</option>
<option value="Program 2">Program 2</option>
<option value="Program 3">Program 3</option>
</select>
<div class="add-program"></div>
</div>
</div>
JavaScript
$(function () {
$("#myButton").popover({
html: true,
content: $("#form").html(),
placement: "bottom"
});
$("#myButton").on("show.bs.popover", function () {
setTimeout(() => {
$(".popover-content .select-program")
.select2({
dropdownParent: $(".popover-content")
})
.on("select2:select", function (e) {
var data = e.params.data;
$(".popover-content .add-program").html("Add " + data.text);
});
}, 0);
});
});
更多信息可以在这里找到。
推荐阅读
- regex - 用于匹配带或不带破折号的数字模式的正则表达式
- angular - 如何修复无法读取角度材料中未定义的属性“时间”?
- docker - 来自 docker 映像的 Elasticsearch 服务未连接到 webapp 或 kibana
- dictionary - 关于为什么我的字典不起作用的初学者问题
- javascript - 我正在尝试使用包含我添加到用户数组的新用户对象的内联数组来调用 displayUsers
- wordpress - 如何让这个插件简码正确显示
- javascript - 从表格每一行的输入中获取数据
- node.js - 升级节点后,出现“分段错误(核心转储)”错误。我该如何解决?
- linux - Unix和Linux ksh shell:当变量来自字符串加上另一个变量时,如何在CASE表达式中使用eval?
- java - 使用java在另一台计算机上打开网络浏览器