动态创建选择上的Selectpicker

时间:2017-11-04 03:41:57

标签: javascript jquery ajax twitter-bootstrap bootstrap-select

我在一个有多个选择的表单中使用bootstrap-select,但我克隆或创建了具有新ID和相同类的新选择并使用:

$(".selectpicker").selectpicker("render"); or
$(".selectpicker").selectpicker("refresh");

并且新选择没有更新,我还尝试克隆正常选择和创建的bootstrap-select更改ID以及data-id和$(".selectpicker").selectpicker("refresh");,但这不起作用。

如何做到这一点。

更新

这是基本的HTML,基本上我使用的是Django formset,这里我有一个带表的表单,每行都是一个带有输入和选择的新表单实例。

<tr class="dynamic-form">
 <td class="" style="text-align: center">
  <input type="number" name="caracteristicas-0-ORDER" value="1" id="id_caracteristicas-0-ORDER">
 </td>
 <td class="" style="text-align: center">
  <select name="caracteristicas-0-caract" data-live-search="true" class="form-control selectpicker" id="id_caracteristicas-0-caract" style="display: none;">
  <option value="1" selected="">Nombre</option>
  <option value="2">Ref</option>
  <option value="3">Modelo</option>
 </select>
</td>

Javascript基本上是这样的:

---- onClickButton ----
row = tr.clone(true); <----- this was the problem
/* clear values, change id's, etc. */
row.insertBefore(lastRow).show();
row.find('.bootstrap-select').remove();
$('.selectpicker').selectpicker("render");

1 个答案:

答案 0 :(得分:0)

阅读完所有库代码后,问题出现在这一行:

row = tr.clone(true);

当您使用clone(true)时,您将获得元素和所有事件处理程序等的副本。您只需要获得元素结构的干净副本。

所以解决方案是:

row = tr.clone();