在键值组件中编辑edit时,selectpicker 控件无法选中的解决方案:
一、edit.html代码中
<select class="form-control selectpicker dtselect" name="<%=name%>[<%=index%>][ptypeid]" data-dtselected="<%=row.ptypeid%>">
{volist name="ptypelist" id="ptype"}
<option value="{$ptype}">{$ptype}</option>
{/volist}
</select>
1、在控件的 class 样式中增加jquery选择 “dtselect”(名称任意)
2、在控件的中增加数据属性 data-dtselected,并将编辑的值赋给data-dtselected。如:data-dtselected="<%=row.ptypeid%>"
二、对应的js代码中
edit: function () {
Controller.api.bindevent();
$(document).on("fa.event.appendfieldlist", ".btn-append", function (e, obj) {
//绑定动态下拉组件
Form.events.selectpage(obj);
//编辑时选中下拉列表
$(".dtselect").each(function(){
let dt = $(this).data("dtselected");
if(typeof(dt)!='undefined'){
$(this).val(dt);
}
});
});
},
1、jquery选择器,获取编辑时动态添加的select控件,并遍历$(".dtselect").each();
2、在遍历中把获取的值从新赋值选择即可。获取值:let dt = (this).val(dt);
总结:
<select class="form-control selectpicker" name="<%=xmmc%>[<%=index%>][myjg]">
{volist name="yzjllistList" id="vo"}
<option value="{$vo}" {in name="vo" value="<%=row.myjg%>"}selected{/in}>{$vo}</option>
{/volist}
</select>
网上案例是在select控件的option中判断是否是该值,然后选中。这里有一个严重的问题是 value="<%=row.myjg%>"是前端js解析的代码,后端thinkphp执行的时候value中的值一直是<%=row.myjg%>并未是真正的值,所以无法选中。