在我追加新行后,select2 不起作用

Posted

技术标签:

【中文标题】在我追加新行后,select2 不起作用【英文标题】:After I append new row, select2 is not working 【发布时间】:2019-10-07 21:58:21 【问题描述】:

我通过 jquery 在表中添加了新行,然后 select2 不起作用

// javascript

$("#add").click(function () 

    $("#mytable").each(function () 

        var tds = '<tr>';

        jQuery.each($('tr:last td', this), function () 

            tds += '<td>' + $(this).html() +'</td>';

        );
        tds += '</tr>';

        if ($('tbody', this).length > 0) 

            $('tbody', this).append(tds);
         else 

            $(this).append(tds);
        

    );
);

//HTML

<form method="POST" action="/store">

         csrf_field() 

        <h2>Invoice</h2>

        <div>

            <!-- Customer job-->

            <div class="form-group job">

            Customer job:
            <select class="customer_job" name="customer_job">

                @if(count($customers)>1)

                    @foreach($customers as $customer)

                        <option>$customer ->job</option>  

                    @endforeach


                @else 
                    <p>No posts found</p>

                @endif

            </select>

            </div>

            <!--Date-->

            <div class="form-group date">

            Date:
            <input type="date" name="date">   

            </div>

        </div>

        <br><br>
        <table id="mytable">

                <tr>
                  <th>ITEM</th>
                  <th>DESCRIPTION</th>
                  <th>QUANTITY</th>
                  <th>RATE</th>
                  <th>AMOUNT</th>
                </tr>

                <tr>
                  <td>
                        <select class="item" name="item">

                                @if(count($items)>1)
                                @foreach($items as $item)
                                    <option>$item ->item_name</option>  
                                @endforeach
                            @endif
                        </select>
                  </td>
                  <td>
                      <input type="text" name="description">
                  </td>
                  <td>
                      <input type="number" name="quantity" id="quantity" step="1">
                  </td>
                  <td>
                        <select class="rate" name="rate" id="rate">
                                @if(count($items)>1)
                                @foreach($items as $item)
                                    <option>$item ->rate</option>  
                                @endforeach
                            @endif
                        </select>
                  </td>
                  <td><input type="number" name="amount" id="amount" readonly /></td>
                </tr>
        </table><br>
        <input type="submit" value="Save" class="submit">
        <input type="button" value="Add" id="add" class="btn-primary add">
        </form>

【问题讨论】:

每次有新的选择都必须使用select2,如果之前使用过再创建一个选择不受影响 【参考方案1】:

使用此代码更改您的 js 代码

var j =2;

    $("#add").on('click', function () 

    var data = '<tr><td><select class="item" name="item">@if(count($items)>1)@foreach($items as $item)<option>$item ->item_name</option>  @endforeach @endif</select></td><td> <input type="text" name="description"></td> <td> <input type="number" name="quantity" id="quantity" step="1"> </td> <td> <select class="rate" name="rate" id="rate"> @if(count($items)>1) @foreach($items as $item)  <option>$item ->rate</option>    @endforeach @endif</select></td><td><input type="number" name="amount" id="amount" readonly />&nbsp; <a href="javascript:void(0);" class="remCF" style="width:auto;font-size:28px;margin-left:1vw;color:#f33102;padding-top:6px;display:inline-block;"><i class="fa fa-times-circle"></i></a></td></tr>';


    $('#mytable tr:last').after(data);

    j++;
    $(".remCF").on('click', function () 
    $(this).parent().parent().remove();
    );

);

我希望它有效

【讨论】:

Dropdown 工作,但 select2 不工作,它不计算新行中的金额,金额 = 数量 * 率,我是通过 jquery 完成的。感谢您的回答

以上是关于在我追加新行后,select2 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Select2 - 多个标签不起作用

ajax调用HTML内容更改后select2 jquery插件不起作用

在获取数据时,对 Django 项目使用 Select2 自动完成功能不起作用

Select2 for AngularJS 中的两种方式数据绑定不起作用

追加后Jquery选择器不起作用

Select2 4.0 JSON 搜索不起作用