`
letitbe
  • 浏览: 231812 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jquery自动完成

阅读更多
以下写得很零碎,纯粹是备忘
1,
  (1)如果用keydown,用中文输入法时在输入框里输汉语拼音的字母就会有感知,故只能用keyup
  (2)后退问题.
       如何区分是在中文输入法的输入框里的后退,还是自动完成录入框里的后退,二者的处理是不一样的。
  (3)确认键
       光标在form里时,按确认键浏览器会自动提交。而我想要的是一按确认键,自动录入选中的那一项。
如何在按确认键时不让form截获这个事件。要做成通用的,而不是在每一个form里写死。
   (4)调试时慎用alert
      alert然后确定时会自动执行blur,会影响的原来程序的执行次序
       

2,插件
 (1)http://code.google.com/p/jqac/ 不错
 (2)http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete 很好很强大
 (3)http://www.dyve.net/jquery/?autocomplete 有遮盖select box功能
 (4)http://docs.jquery.com/Plugins/AutoComplete
 (5)http://mabp.kiev.ua/content/2008/04/08/autocomplete_by_your_own_hands
 (6)http://www.pengoworks.com/workshop/jquery/autocomplete.htm
 (7)http://huacn.blogbus.com/logs/19643985.html

测试鼠标事件和键盘事件在IE和FF下的执行次序,同时测试在中文输入法下的执行次序
<!----><script>
function $(id){return document.getElementById(id);}
</script>
<input onmousedown="$('d').value=$('d').value+'down'" onmouseup="$('d').value=$('d').value+'up'"
 onclick
="$('d').value=$('d').value+'click'" ><br>
<input onkeydown="$('d').value=$('d').value+'down';" onkeyup="$('d').value=$('d').value+'up-'"
  onkeypress
="$('d').value=$('d').value+'press';"><br><br><br><br>
<input id='d' size=100>
你会发现,在非中文输入法模式下,IE和FF大体上按下面的顺序
(1)对key 来说 :keydown-->keypress-->keyup
如果持续按住键位,keydown会持续执行;
如果要阻止按键的默认行为,必须使用keypress(用return false),但按backspace时不行,因为backspace时只执行keydown和keyup,keyup之前回退的效果已经生效了。
(2)对mouse来说 :mousedown-->mouseup-->click ,在IE下如果在与按下鼠标的相同元素上松开则产生click事件,如果松开时已经离开最初按下时的元素了,则不会产生click事件;但据我观察FF下不是这样,FF下无论鼠标是否在最初的元素上松开,都会产生click事件。

在中文输入法模式下:
(1)FF
ff1.jpgff2.jpg
其中downup-up-是输入法切换时的键盘事件
输入第一个字母时产生down-press事件,然后输入任何字母都不会产生键盘事件, 只有按确认输入的键了,例如按space或是1,才会执行up事件,见右图。
也就是说录入一次中文时,不管中间过程怎么样,整个的键盘事件只有3个:down-press-up
(注:以上说的键盘事件都是指发生在input上的)
2,IE
IE1.jpgIE2.jpg
其中downup-up-也是输入法切换时的键盘事件
然后在输入法框里的所有按键都产生一对downup事件,包括回退和确认都是。
无论光标在input还是在输入法框按回退,都是down-up

用style.imeMode好像无法得到当前text的输入法模式
(http://topic.csdn.net/t/20040908/13/3351801.html)

http://www.hihiyou.com/?p=5
http://realazy.org/blog/2007/10/31/solution-of-keyup-failing-when-ime-is-on/
http://topic.csdn.net/t/20040714/21/3175529.html
http://www.iteye.com/topic/191555

onpropertychange时用event.propertyName   ==   "value"

分享到:
评论
1 楼 沉子风 2009-06-08  
谢谢分享,我目前用了第2个插件
感觉还不错。

相关推荐

Global site tag (gtag.js) - Google Analytics