最近在使用scriptaculous/完成项目中的一处自动提示功能时,发现Ajax.Autocompleter对中文支持很不好。
我用的是Google拼音输入法,在输入汉字的拼音时,输入完第一个字母后即触发输入框的事件,js就向服务器查询相应的匹配。实际上此时汉字尚未上屏,出来的匹配是该汉字首字母匹配(英文的)。这样,自动提示功能不仅毫无用处,而且会让用户莫名其妙。
一番探索之后,发现scriptaculous是在捕捉到keypress事件时向后台发起查询请求的,我仅简单地把keypress改为keyup,即解决了支持中文输入的问题。显然,这是由于输入法在浏览器的更上层处理了键盘事件的缘故。不过本方法没有经过广泛的测试,我只是在Firefox+Google拼音这个组合中试验通过。
似乎现在jQuery的发展正如日中天,各种插件数不胜数。尽管Prototype以及基于它而来的一些js library仍旧占据着很大的市场,但相对于jQuery来说已经是在走下坡路。