1) 这是最早的版本,基于jQuery 1.2:
http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
2) 现已迁移到jQuery 1.5,作为jQuery UI Plugins的一个子项目:
http://jqueryui.com/demos/autocomplete/
示例就不往这上面抄了。
有一个问题需要关注:输入法开启下的事件捕获。也就是含有中文的提示功能。
这个功能在Firefox下有些问题,因为插件的事件捕获是通过keydown事件进行的,在其他浏览器下开启输入法,keydown将在选字结束后触发;而Firefox下无论输入法打开与否,每次敲击案件均会触发。
为了说明,给个例子,假如现在输入“王”,击键顺序是“wang1”.
匹配库中有一个词语“王五”
那么事件顺序是:
firefox: w(keydown'w')->a(keydown'a')->n(keydown'n')->g(keydown'g')->1(keydown'1')
其他: wang1(keydown'王')
firefox会以"wang1"而不是"王"作为前缀进行查找,显然,“王五”不会被提示出来。
现在需要做的就是,在中文选词结束后,获取输入的中文,并且以这个中文内容作为自动提示前缀进行搜索。
为此,我们为输入框加一个事件监听就行了:
bind("input", function(){ onChange(0, true); })
在代码200行处添加这个事件的绑定即可(如果向上追溯,可以看出这段代码是对输入框绑定一系列事件处理函数)。
这个修改基于1) 中的autocomplete插件,2) 的应该差不多,不再赘述。