combobox 操作复选框
html代码
<input id="ttt" name="ttt" class="easyui-combobox">
js代码
1、js工具方法
/**
* 带有复选框的easyui下拉框工具方法
* @param _id input标签的id
* @param optionsJson json字符串,定义选项的内容,
* 例子:
* [
* {id: '对应于option标签的value', text: '页面显示文本'}
* ]
* @param hight 下拉框高度
*/
function combobox_checkbox(_id, optionsJson, hight) {
$('#'+_id).combobox({
data: optionsJson,
valueField: 'id',
textField: 'text',
panelHeight: hight,
multiple: true,
editable: false,
formatter: function (row) { // formatter方法就是实现了在每个下拉选项前面增加checkbox框的方法
var opts = $(this).combobox('options');
return '<input type="checkbox" class="combobox-checkbox">' + row[opts.textField]
},
onLoadSuccess: function () { // 下拉框数据加载成功调用
// 正常情况下是默认选中“所有”,但我想实现点击所有全选功能,这这样会冲突,暂时默认都不选
$("#"+_id).combobox('clear'); //清空
// var opts = $(this).combobox('options');
// var values = $('#'+_id).combobox('getValues');
// $.map(opts.data, function (opt) {
// if (opt.id === '') { // 将"所有"的复选框勾选
// $('#'+opt.domId + ' input[type="checkbox"]').prop("checked", true);
// }
// });
},
onSelect: function (row) { // 选中一个选项时调用
var opts = $(this).combobox('options');
//当点击所有时,则勾中所有的选项
if (row.text === "全选") {
var data = $("#"+_id).combobox('getData');
for (var i = 0; i < data.length; i++) {
$('#'+data[i].domId + ' input[type="checkbox"]').prop("checked", true);
}
var list = [];
$.map(opts.data, function (opt) {
list.push(opt.id);
});
$("#"+_id).combobox('setValues', list); // combobox全选
} else {
//设置选中选项所对应的复选框为选中状态
$('#'+row.domId + ' input[type="checkbox"]').prop("checked", true);
}
},
onUnselect: function (row) { // 取消选中一个选项时调用
var opts = $(this).combobox('options');
// 当取消全选勾中时,则取消所有的勾选
if (row.text === "全选") {
var a = $("#"+_id).combobox('getData');
for (var i = 0; i < a.length; i++) {
$('#'+a[i].domId + ' input[type="checkbox"]').prop("checked", false);
}
$("#"+_id).combobox('clear');//清空选中项
} else {
// 下面是实现全选状态下取消任何一项,则取消勾选所有
//设置选中选项所对应的复选框为非选中状态
$('#'+row.domId + ' input[type="checkbox"]').prop("checked", false);
var selectedList
