Title: BUG tagbox in datagridfilter
Post by: Vladzimir on November 23, 2025, 10:20:45 AM
I use $.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'); } } });$(target).tagbox('setValues', value); return bug Uncaught TypeError: can't access property "textbox", $.data(...) is undefined $(target).tagbox('clear'); return bug Uncaught TypeError: can't access property "options", $.data(...) is undefined
Title: Re: BUG tagbox in datagridfilter
Post by: Vladzimir on November 28, 2025, 12:09:43 PM
This is a global error. It works even with textbox, but only when resetting the value. $(target).textbox('setValue', '');I fixed it using only try { $(target).textbox('setValue', value); } catch (e) { }
or try { $(target).tagbox('setValues', value); } catch (e) { }
Does anyone have any ideas as to why this is happening?
Title: Re: BUG tagbox in datagridfilter
Post by: jarry on December 05, 2025, 12:59:25 AM
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>
Title: Re: BUG tagbox in datagridfilter
Post by: Vladzimir on December 08, 2025, 01:13:49 PM
Please refer to this example.
The problem was not in the extension, but in my carelessness. I used a class for the filter button $.fn.datagrid.defaults.filterBtnIconCls = 'far fa-filter datagrid-filter'; Which is what caused the error. P.S. I would like to request a modification that will allow the use of dual classes like 'far fa-check' for filterMenuIconClsmenu.find('.'+opts.filterMenuIconCls.replace(/\s+/g, '.')).removeClass(opts.filterMenuIconCls);
Otherwise they are not removed.
Title: Re: BUG tagbox in datagridfilter
Post by: jarry on December 09, 2025, 01:04:40 AM
Call this code to assign your customized 'filterBtnIconCls' value. var dg = $('#dg').datagrid({ filterBtnIconCls: 'far fa-check' });
Title: Re: BUG tagbox in datagridfilter
Post by: Vladzimir on December 09, 2025, 07:30:43 AM
Call this code to assign your customized 'filterBtnIconCls' value. var dg = $('#dg').datagrid({ filterBtnIconCls: 'far fa-check' });
The problem was precisely the presence of the class datagrid-filterThat's why the error was generated, because it is a system class. I see that the extension version number has changed to 1.0.8, but I didn’t find any changes there.
|