Rails的auto_complete插件非常棒,可以用很少的代码来实现输入框的自动提示功能,在使用过程中发现这个插件并不能很好的支持中文,当然这不是插件的错,而是script.aculo.us这个JS组件的Autocompleter并不能太好的支持中文提示。例如,当输入"中国"查询的时候,先在输入法中输入zhongguo,这时JS会开始发送zhongguo去后台查询,按了空格选择中文后,JS不会再重新发送中文去后台,网上查了一下资料,将controls.js中Event.observe的keydown事件改为keyup就可以了(第89行附近),中英文的自动提示都没问题。相信这个Bug应该在以后的版本中得到修正吧。
最近转入JQuery阵营,发现JQuery仍然有中文输入提示的问题,只要把keydown事件改成keyup就可以了,但是这时候用户按Tab或者回车键,选择的提示文字不会进入到输入框,加入下面的代码解决:
$input.bind("keydown.autocomplete", function(event) { switch(event.keyCode) { case KEY.TAB: case KEY.RETURN: if( selectCurrent() ) { // stop default to prevent a form submit, Opera needs special handling event.preventDefault(); blockSubmit = true; return false; } break; } })