2010-12-11 49 views
4

如何使用ExtJs编写简单的自动完成功能?如果该字段有地址,他们开始输入st它应该成为街道等使用ExtJs自动完成文本字段

+3

我写这篇文章的评论,而不是因为答案我没有时间给你测试代码,只是一个草图。听起来,这可以通过配置属性hideTrigger:true(使其看起来像一个普通的TextField)和typeAhead:true(它提供了一种建议机制)以及一个用于keyup事件的监听器的ComboBox来完成解析字符串(getValue())并查看最后一个单词是否与某个给定字典匹配,并相应地用任何建议填充ComboBox。 – 2010-12-11 04:40:07

+0

@fastcodejava可以发布你的完整代码吗? – freestyle 2013-07-11 06:56:59

回答

14

正如Mitch在他的评论中所建议的那样,您可以使用Ext.form.Combobox(正确配置)来执行此操作。你不需要绑定任何东西到键盘事件,因为Combobox会为你处理。

这是应该工作的配置的开始。您需要提供一个适当的Ext.data.Store(或其子类),以及一些其他配置值(displayField,valueField,queryParam等)。所有必要的东西在API文档相当有据可查)

MyTypeahead = new Ext.form.ComboBox({ 
    triggerAction:'all', 
    typeAhead:true, 
    mode:'remote', 
    minChars:2, 
    forceSelection:true, 
    hideTrigger:true 
}); 
+1

在“123主要街道”这样的输入应该触发“辞典”在字典中但是“123主要街道”没有的建议“123主要街道”的印象,据我所知,ComboBox中没有自动机制。虽然我从来没有使用过queryParam,所以我可能会错。无论如何,我给+1。 – 2010-12-11 20:27:50

+1

啊,我没有这样读 - 我的回答只是一个简单的强制选择typeahead领域。如果“123主要街道”作为选项存在,“123主要街道”会建议“123主要街道”。 queryParam只是命名用于进行远程查询的请求变量。 – timdev 2010-12-11 21:01:22

+0

米奇对我所寻找的是正确的。我仍然为+1付出了努力并接受了答案。 – fastcodejava 2010-12-12 10:11:50