在我追加新行后,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 /> <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 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
ajax调用HTML内容更改后select2 jquery插件不起作用
在获取数据时,对 Django 项目使用 Select2 自动完成功能不起作用