Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript KendoUI自动完成小部件在为空时不更新过滤器_Javascript_Filter_Kendo Ui_Kendo Datasource_Kendo Autocomplete - Fatal编程技术网

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
当我在“自动完成”框中键入A时,它会按预期自动过滤掉最后一项。然后如果我点击B,第二项也被过滤掉。如果单击backspace,则第二项将重新出现。但是,在最后一个空格处,第三项不会出现
$('#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
    });
}