今天有个需求是通过combobox选中的选项存储相关的危害因素,而且是多选。查了好久api发现combobox并没有多选框,于是查找资料仿照大神的方法写了一个自己的。
<tr>
<td>危害因素:</td>
<td><input class="easyui-combobox" type="text" name="danger" id="danger" style="width: 300px"></input></td>
</tr>
<script type="text/javascript">
$('#danger').combobox({
required:false, //校验
editable:false, //可编辑
url: '${path}/danger/alldanger.do',//数据源
valueField: 'id',//绑定字段ID
textField: 'strname', //绑定字段Name
panelHeight: 'auto',//自适应
multiple: true,
formatter: function (row) {
var opts = $(this).combobox('options');
return '<input type="checkbox" class="combobox-checkbox" id="' + row[opts.valueField] + '">' + row[opts.textField]
},
onShowPanel: function () {
var opts = $(this).combobox('options');
var target = this;
var values = $(target).combobox('getValues');
$.map(values, function (value) {
var el = opts.finder.getEl(target, value);
el.find('input.combobox-checkbox')._propAttr('checked', true);
})
},
onLoadSuccess: function () {
var opts = $(this).combobox('options');
var target = this;
var values = $(target).combobox('getValues');
$.map(values, function (value) {
var el = opts.finder.getEl(target, value);
el.find('input.combobox-checkbox')._propAttr('checked', true);
})
},
onSelect: function (row) {
var opts = $(this).combobox('options');
var el = opts.finder.getEl(this, row[opts.valueField]);
el.find('input.combobox-checkbox')._propAttr('checked', true);
},
onUnselect: function (row) {
var opts = $(this).combobox('options');
var el = opts.finder.getEl(this, row[opts.valueField]);
el.find('input.combobox-checkbox')._propAttr('checked', false);
}
});
</script>
感觉以后应该还会用到,写下来以后好找(* ̄︶ ̄)y