Javascript KendoUI自动完成小部件在为空时不更新过滤器
我有一个自动完成小部件绑定到数据源,如下所示:Javascript KendoUI自动完成小部件在为空时不更新过滤器,javascript,filter,kendo-ui,kendo-datasource,kendo-autocomplete,Javascript,Filter,Kendo Ui,Kendo Datasource,Kendo Autocomplete,我有一个自动完成小部件绑定到数据源,如下所示: <input data-filter="contains" data-role="autocomplete" data-bind="source: styleData" data-text-field="style" id="style-name" /> 我在数据源中有以下项: ABC123 123AC ZZZ 当我在“自动完成”框中键入A时,它会按预期自动过滤掉最后一项。然后如果我点击B,第二项也被过滤掉。如果单击backs
<input data-filter="contains" data-role="autocomplete" data-bind="source: styleData" data-text-field="style" id="style-name" />
我在数据源中有以下项:
- ABC123
- 123AC
- ZZZ
$('#style name')。getKendoAutoComplete()
的值解析为空字符串,但数据源的筛选器仍列出了{field:'style',logic:'contains',value:'A'}
我在Windows 8.1 Update 1上对Firefox 30和IE11进行了测试,结果都是一样的。这是因为
data-min-length="1"
此属性仅在至少键入一个字符时触发自动完成
如果您想显示所有结果,但不包含最小1个字符,那么您可能正在寻找一个组合框。因此我花了一些时间仔细阅读源代码,我猜此功能的目的是通过搜索功能中的以下行(kendo.autocomplete.js,2014年第1季度,第301行)指示的:
!!长度0计算为true并关闭弹出窗口而不更改过滤器。我打算将_filterSource行移到条件之外以解决问题。抱歉,我补充说,在它不工作之后,希望当框的长度低于指定值时,它会清除自身或其他内容。移除它并不能解决问题。我更新了原始问题以反映这一点。另外,我不想要一个组合框,因为最终会有数百条记录,我不要求用户实际选择一个选项,部分仍然应该过滤数据。
if (!length) {
that.popup.close();
} else if (length >= that.options.minLength) {
that._open = true;
that._filterSource({
value: ignoreCase ? word.toLowerCase() : word,
operator: options.filter,
field: options.dataTextField,
ignoreCase: ignoreCase
});
}