空闲时,KendoUI AutoComplete小部件不会更新过滤器

时间:2014-06-17 21:11:21

标签: javascript filter kendo-ui kendo-datasource kendo-autocomplete

我有一个AutoComplete小部件绑定到数据源,如下所示:

<input data-filter="contains" data-role="autocomplete" data-bind="source: styleData" data-text-field="style" id="style-name" />

我在数据源中有以下项目:

  • ABC123
  • 123AC
  • ZZZ

当我在自动完成框中输入A时,它会自动按预期过滤掉最后一项。然后,如果我点击B,第二个项目也会被过滤掉。如果我然后按下退格键,则第二个项目重新出现。但是,使用最终退格键时,第三个项目不会出现。 $('#style-name').getKendoAutoComplete()的值已解析为空字符串,但dataSource的过滤器仍会列出{field: 'style', logic: 'contains', value: 'A'}

我在Windows 8.1 Update 1上对Firefox 30和IE11进行了测试,两者都给出了相同的结果。

2 个答案:

答案 0 :(得分:1)

这是因为

data-min-length="1"

此属性仅在您输入至少一个字符时才会触发自动完成。

如果要显示最少1个字符的所有结果,那么您可能正在寻找一个ComboBox。

答案 1 :(得分:0)

所以我花了一些时间来阅读源代码,我想这个功能的目的是搜索功能的以下几行(kendo.autocomplete.js,2014年第1季度,第301行):

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
    });
}

!长度为0的计算结果为true,关闭弹出窗口而不更改过滤器。我将在条件之外移动_filterSource行来解决问题。