簡體   English   中英

如何將 select2 功能添加到新添加的動態選擇框

[英]How to add select2 function to newly added dynamic select box

我正在嘗試在 Html 表單中實現 select2,它適用於第一個元素

在此處輸入圖片說明

但它不適用於動態添加的第二個元素

在此處輸入圖片說明

我已盡力做到這一點,但我是 JavaScript 新手並選擇 2

我在這寫了我的整個代碼

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>

<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>

<table class="table" id="dynamicTable12" style="width: 50%">
                        <tr>
                        <th scope="col" span="1" style="width: 25%;" >projects</th>
                        </tr>
                        <tr>
                        <td> <select name="addmore1[0][project]" class="form-control" id="state" required="required">
                                    <option value="">-- Select Project --</option>
                                    <option value="A">A</option>
                                    <option value="B">B</option>
                        </select></td>  
                        <td><button type="button" name="add" id="add12" class="btn btn-success">Add More</button></td>  </tr>
                            </table>

<script type="text/javascript">
var i = 0;
$("#add12").click(function(){
    ++i;
    $("#dynamicTable12").append('<tr><td><select name="addmore1['+i+'][project]" id="" class="form-control" required="required"><option value="">-- Select Project --</option> <option value="A">A</option><option value="B">B</option></select></td><td><button type="button" class="btn btn-danger remove-tr">Remove</button></td></tr>');
});
$(document).on('click', '.remove-tr', function(){  
     $(this).parents('tr').remove();
}); 

$(document).ready(function() {
    $('.js').select2();
});
</script>       

我不確定您提供的原始代碼是否正常工作。 因為沒有具有.js類的元素,如下行所示:

$('.js').select2();

但是,讓我們進入正題。 第二個或以后的select沒有功能的原因是因為在創建新元素時, select2插件不會重新配置這個新元素。 因此,您必須再次重新初始化select2插件。 您可以通過在單獨的函數中提供初始化代碼來實現這一點,然后在添加新元素時調用它。 注意提供的代碼中的js類和reinitializeSelect2功能。

 let initializeSelect2 = function() { $('.js').select2(); } var i = 0; $("#add12").click(function(){ ++i; $("#dynamicTable12").append('<tr><td><select name="addmore1['+i+'][project]" id="" class="form-control js" required="required"><option value="">-- Select Project --</option> <option value="A">A</option><option value="B">B</option></select></td><td><button type="button" class="btn btn-danger remove-tr">Remove</button></td></tr>'); initializeSelect2() }); $(document).on('click', '.remove-tr', function(){ $(this).parents('tr').remove(); }); $(document).ready(function() { initializeSelect2() });
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script> <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" /> <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script> <table class="table" id="dynamicTable12" style="width: 50%"> <tr> <th scope="col" span="1" style="width: 25%;" >projects</th> </tr> <tr> <td> <select name="addmore1[0][project]" class="form-control js" id="state" required="required"> <option value="">-- Select Project --</option> <option value="A">A</option> <option value="B">B</option> </select></td> <td><button type="button" name="add" id="add12" class="btn btn-success">Add More</button></td> </tr> </table>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM