如何在DHTMLX组合中生成自定义建议列表

时间:2017-09-01 14:43:35

标签: javascript combobox dhtmlx

DHTMLX Combo提供的自动建议列表会在每次击键时更新,但显然只使用前缀匹配。如何更改逻辑以匹配选项文本中的任何位置。

E.g。在下面的小提琴:

https://jsfiddle.net/wra8etjw/2/

即使我在框中输入“ee”,我也希望显示“三”的建议。我已经阅读了custom filtering上的文档,但自定义过滤方法和用户定义函数都没有让我随时随地。

我正在以一种基本的方式使用DHTMLX组合框。即,选项在服务器提供的HTML文件中以文字形式出现(它们非常静态),因此onDynXLS永远不会被触发(没有Ajax正在进行)。

我的另一个想法是捕获用户正在键入的当前值,将其保存到某个全局变量,然后提供用户定义的过滤函数,该函数将在当前值存在的所有值上返回true(不仅仅是作为前缀)。这也失败了,因为显然用户定义的过滤功能仅在页面加载时调用,而不是在输入文本内的每个击键上调用。此外,我不知道哪个甚至可以用来捕捉Combo输入文本中的击键并获得当前值。

所以我的问题是:

  1. 如何使建议列表显示当前文本作为子字符串存在于其中的任何位置的值,而不仅仅是作为前缀?
  2. 如何捕获Combo输入文本中的击键并获取用户输入时的当前值?

2 个答案:

答案 0 :(得分:0)

  
    

如何使建议列表显示当前文本作为子字符串存在于其中的任何位置的值,而不仅仅是作为前缀?

  

不幸的是,如果没有修改dhtmlxCombo源代码,则无法使用此功能 或者您应该使用服务器端过滤模式,这样您就可以使用onDynXLS事件解决方案。

  
    

如何在Combo的输入文本中捕获击键并在用户输入时获取当前值?

  

您可以尝试使用" onKeyPressed"事件: https://docs.dhtmlx.com/api__dhtmlxcombo_onkeypressed_event.html

答案 1 :(得分:0)

  
    
        
  1. 如何使建议列表显示当前文本作为子字符串存在于其中的任何位置的值,而不仅仅是作为前缀?
  2.        

使用enableFilteringMode('between')

  
    
        
  1. 如何在Combo的输入文本中捕获击键,并在用户输入时获取当前值?
  2.        

最简单的方法IMO是在Combo使用的基础input元素中附加处理程序。

更新了小提琴here