Please refer to this example.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="https://www.jeasyui.com/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="https://www.jeasyui.com/easyui/themes/icon.css">
<script type="text/javascript" src="https://www.jeasyui.com/easyui/jquery.min.js"></script>
<script type="text/javascript" src="https://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="https://www.jeasyui.com/easyui/datagrid-filter.js"></script>
<script>
$.extend($.fn.datagrid.defaults.filters, {
tagbox: {
init: function (container, options) {
var input = $('<input>').appendTo(container);
input.tagbox($.extend({
selectOnNavigation: true,
panelHeight: 'auto',
hasDownArrow: true,
limitToList: true
}, options || {}));
console.log('init');
return input;
},
setValue: function (target, value) {
console.log('setValue');
if (value) {
$(target).tagbox('setValues', value);
} else {
$(target).tagbox('clear');
}
},
getValue: function (target) {
console.log('getValue');
return $(target).tagbox('getValues');
},
resize: function (target, width) {
console.log('resize');
$(target).tagbox('resize', width);
},
destroy: function (target) {
console.log('destroy');
$(target).tagbox('destroy');
}
}
});
$.extend($.fn.datagrid.defaults.operators, {
equal2: {
text: 'Equal',
isMatch: function (source, value) {
const vv = $.isArray(value) ? value : value.split(',');
return $.inArray(source,vv) >= 0;
}
},
});
var data = [
{ "productid": "FI-SW-01", "productname": "Koi", "unitcost": 10.00, "status": "P", "listprice": 36.50, "attr1": "Large", "itemid": "EST-1" },
{ "productid": "K9-DL-01", "productname": "Dalmation", "unitcost": 12.00, "status": "P", "listprice": 18.50, "attr1": "Spotted Adult Female", "itemid": "EST-10" },
{ "productid": "RP-SN-01", "productname": "Rattlesnake", "unitcost": 12.00, "status": "P", "listprice": 38.50, "attr1": "Venomless", "itemid": "EST-11" },
{ "productid": "RP-SN-01", "productname": "Rattlesnake", "unitcost": 12.00, "status": "P", "listprice": 26.50, "attr1": "Rattleless", "itemid": "EST-12" },
{ "productid": "RP-LI-02", "productname": "Iguana", "unitcost": 12.00, "status": "P", "listprice": 35.50, "attr1": "Green Adult", "itemid": "EST-13" },
{ "productid": "FL-DSH-01", "productname": "Manx", "unitcost": 12.00, "status": "N", "listprice": 158.50, "attr1": "Tailless", "itemid": "EST-14" },
{ "productid": "FL-DSH-01", "productname": "Manx", "unitcost": 12.00, "status": "P", "listprice": 83.50, "attr1": "With tail", "itemid": "EST-15" },
{ "productid": "FL-DLH-02", "productname": "Persian", "unitcost": 12.00, "status": "P", "listprice": 23.50, "attr1": "Adult Female", "itemid": "EST-16" },
{ "productid": "FL-DLH-02", "productname": "Persian", "unitcost": 12.00, "status": "N", "listprice": 89.50, "attr1": "Adult Male", "itemid": "EST-17" },
{ "productid": "AV-CB-01", "productname": "Amazon Parrot", "unitcost": 92.00, "status": "N", "listprice": 63.50, "attr1": "Adult Male", "itemid": "EST-18" }
];
$(function () {
var dg = $('#dg').datagrid({
filterBtnIconCls: 'icon-filter'
});
dg.datagrid('enableFilter', [{
field: 'listprice',
type: 'numberbox',
options: { precision: 1 },
op: ['equal', 'notequal', 'less', 'greater']
}, {
field: 'unitcost',
type: 'numberbox',
options: { precision: 1 },
op: ['equal', 'notequal', 'less', 'greater']
}, {
field: 'status',
type: 'tagbox',
op1: ['contains'],
options: {
value: ['P', 'N'],
editable: false,
data: [{ value: 'P', text: 'P' }, { value: 'N', text: 'N' }],
onChange: function (value) {
setTimeout(() => {
if (value == '' || value.length == 0) {
dg.datagrid('removeFilterRule', 'status');
} else {
dg.datagrid('addFilterRule', {
field: 'status',
op: 'equal2',
value: value
});
}
dg.datagrid('doFilter');
}, 200)
}
}
}]);
});
</script>
</head>
<body>
<table id="dg" title="DataGrid" style="width:900px;height:250px" data-options="
singleSelect:true,
data:data
">
<thead>
<tr>
<th data-options="field:'itemid',width:80">Item ID</th>
<th data-options="field:'productid',width:100">Product</th>
<th data-options="field:'listprice',width:80,align:'right'">List Price</th>
<th data-options="field:'unitcost',width:80,align:'right'">Unit Cost</th>
<th data-options="field:'attr1',width:250">Attribute</th>
<th data-options="field:'status',width:150,align:'center'">Status</th>
</tr>
</thead>
</table>
</body>
</html>