Javascript 添加了多个 Bootstrap Select div 不工作
Javascript added multiple Bootstrap Select div not working
我正在使用 Bootstrap 来设计我的页面。我关注此页面 http://skote-light.node.themesbrand.com/form-advanced 以创建 多个 Select.
<script src="~/assets/js/pages/form-advanced.init.js"></script>
<div class="row mt-3">
<div class="col-lg-12">
<div class="form-group">
<label for="basicpill-firstname-input">Countries/Regions (You may add more countries/regions)</label>
<select class="select2 form-control select2-multiple" multiple="multiple" data-placeholder="Choose ...">
<option value="SG">Singapore</option>
<option value="CH">China</option>
<option value="CA">California</option>
</select>
</div>
</div>
<div id="add-more">Add More<div>
这个的输出是
要求是我需要一个添加更多按钮,以添加多个 select。
所以我做的是
$("#add-more").click(function () {
$("#add-more").before(
`
<div class="row mt-3">
<div class="col-lg-12">
<div class="form-group">
<label for="basicpill-firstname-input">Countries/Regions (You may add more countries/regions)</label>
<select class="select2 form-control select2-multiple" multiple="multiple" data-placeholder="Choose ...">
<option value="SG">Singapore</option>
<option value="CH">China</option>
<option value="CA">California</option>
</select>
</div>
</div>
`
问题是当我尝试使用 JavaScript 追加时,多个 select 的行为是这样的
即 bootstrap 属性未应用于它。
很可能在使用 JavaScript 附加时,它无法使用 JavaScript 脚本。
请帮我解决这个问题。
谢谢。
您需要初始化动态添加的 select2
,您可以简单地使用 $('.select2-multiple:last').select2()
这将搜索最后的 select-box 并初始化它。
演示代码 :
$(".select2-multiple").select2();
$("#add-more").click(function() {
$("#add-more").before(
`
<div class="row mt-3">
<div class="col-lg-12">
<div class="form-group">
<label for="basicpill-firstname-input">Countries/Regions (You may add more countries/regions)</label>
<select class="select2 form-control select2-multiple" multiple="multiple" data-placeholder="Choose ...">
<option value="SG">Singapore</option>
<option value="CH">China</option>
<option value="CA">California</option>
</select>
</div>
</div>
`)
//initialize selct2 which is added last
$('.select2-multiple:last').select2();
});
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css">
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/js/select2.min.js"></script>
<div class="row mt-3">
<div class="col-lg-12">
<div class="form-group">
<label for="basicpill-firstname-input">Countries/Regions (You may add more countries/regions)</label>
<select class="select2 form-control select2-multiple" multiple="multiple" data-placeholder="Choose ...">
<option value="SG">Singapore</option>
<option value="CH">China</option>
<option value="CA">California</option>
</select>
</div>
</div>
<div id="add-more">Add More
<div>
工作代码
window.onload = function () {
// no need to initialize here.
//$('.select2-multiple').select2();
});
$("#add-more").click(function () {
$("#add-more").before(
`
<div class="row mt-3">
<div class="col-lg-12">
<div class="form-group">
<label for="basicpill-firstname-input">Countries/Regions (You may add more countries/regions)</label>
<select class="select2 form-control select2-multiple" multiple="multiple" data-placeholder="Choose ...">
<option value="SG">Singapore</option>
<option value="CH">China</option>
<option value="CA">California</option>
</select>
</div>
</div>
`);
//$('.select2-multiple:last').select2();
//initialize here instead
$('.select2-multiple').select2();
});
我正在使用 Bootstrap 来设计我的页面。我关注此页面 http://skote-light.node.themesbrand.com/form-advanced 以创建 多个 Select.
<script src="~/assets/js/pages/form-advanced.init.js"></script>
<div class="row mt-3">
<div class="col-lg-12">
<div class="form-group">
<label for="basicpill-firstname-input">Countries/Regions (You may add more countries/regions)</label>
<select class="select2 form-control select2-multiple" multiple="multiple" data-placeholder="Choose ...">
<option value="SG">Singapore</option>
<option value="CH">China</option>
<option value="CA">California</option>
</select>
</div>
</div>
<div id="add-more">Add More<div>
这个的输出是
要求是我需要一个添加更多按钮,以添加多个 select。 所以我做的是
$("#add-more").click(function () {
$("#add-more").before(
`
<div class="row mt-3">
<div class="col-lg-12">
<div class="form-group">
<label for="basicpill-firstname-input">Countries/Regions (You may add more countries/regions)</label>
<select class="select2 form-control select2-multiple" multiple="multiple" data-placeholder="Choose ...">
<option value="SG">Singapore</option>
<option value="CH">China</option>
<option value="CA">California</option>
</select>
</div>
</div>
`
问题是当我尝试使用 JavaScript 追加时,多个 select 的行为是这样的
很可能在使用 JavaScript 附加时,它无法使用 JavaScript 脚本。
请帮我解决这个问题。 谢谢。
您需要初始化动态添加的 select2
,您可以简单地使用 $('.select2-multiple:last').select2()
这将搜索最后的 select-box 并初始化它。
演示代码 :
$(".select2-multiple").select2();
$("#add-more").click(function() {
$("#add-more").before(
`
<div class="row mt-3">
<div class="col-lg-12">
<div class="form-group">
<label for="basicpill-firstname-input">Countries/Regions (You may add more countries/regions)</label>
<select class="select2 form-control select2-multiple" multiple="multiple" data-placeholder="Choose ...">
<option value="SG">Singapore</option>
<option value="CH">China</option>
<option value="CA">California</option>
</select>
</div>
</div>
`)
//initialize selct2 which is added last
$('.select2-multiple:last').select2();
});
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css">
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/js/select2.min.js"></script>
<div class="row mt-3">
<div class="col-lg-12">
<div class="form-group">
<label for="basicpill-firstname-input">Countries/Regions (You may add more countries/regions)</label>
<select class="select2 form-control select2-multiple" multiple="multiple" data-placeholder="Choose ...">
<option value="SG">Singapore</option>
<option value="CH">China</option>
<option value="CA">California</option>
</select>
</div>
</div>
<div id="add-more">Add More
<div>
工作代码
window.onload = function () {
// no need to initialize here.
//$('.select2-multiple').select2();
});
$("#add-more").click(function () {
$("#add-more").before(
`
<div class="row mt-3">
<div class="col-lg-12">
<div class="form-group">
<label for="basicpill-firstname-input">Countries/Regions (You may add more countries/regions)</label>
<select class="select2 form-control select2-multiple" multiple="multiple" data-placeholder="Choose ...">
<option value="SG">Singapore</option>
<option value="CH">China</option>
<option value="CA">California</option>
</select>
</div>
</div>
`);
//$('.select2-multiple:last').select2();
//initialize here instead
$('.select2-multiple').select2();
});