MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          jquery自動(dòng)完成

          Posted on 2008-05-07 14:16 leekiang 閱讀(3575) 評(píng)論(0)  編輯  收藏 所屬分類: jquery(進(jìn)去而已)
          以下寫得很零碎,純粹是備忘
          1,
          ? (1)如果用keydown,用中文輸入法時(shí)在輸入框里輸漢語(yǔ)拼音的字母就會(huì)有感知,故只能用keyup
          ? (2)后退問(wèn)題.
          ?????? 如何區(qū)分是在中文輸入法的輸入框里的后退,還是自動(dòng)完成錄入框里的后退,二者的處理是不一樣的。
          ? (3)確認(rèn)鍵
          ?????? 光標(biāo)在form里時(shí),按確認(rèn)鍵瀏覽器會(huì)自動(dòng)提交。而我想要的是一按確認(rèn)鍵,自動(dòng)錄入選中的那一項(xiàng)。
          如何在按確認(rèn)鍵時(shí)不讓form截獲這個(gè)事件。要做成通用的,而不是在每一個(gè)form里寫死。
          ?? (4)調(diào)試時(shí)慎用alert
          ????? alert然后確定時(shí)會(huì)自動(dòng)執(zhí)行blur,會(huì)影響的原來(lái)程序的執(zhí)行次序
          ???????

          2,插件
          ?(1)http://code.google.com/p/jqac/?不錯(cuò)
          ?(2)http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete 很好很強(qiáng)大
          ?(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

          測(cè)試鼠標(biāo)事件和鍵盤事件在IE和FF下的執(zhí)行次序,同時(shí)測(cè)試在中文輸入法下的執(zhí)行次序
          <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>
          你會(huì)發(fā)現(xiàn),在非中文輸入法模式下,IE和FF大體上按下面的順序
          (1)對(duì)key 來(lái)說(shuō) :keydown-->keypress-->keyup
          如果持續(xù)按住鍵位,keydown會(huì)持續(xù)執(zhí)行;
          如果要阻止按鍵的默認(rèn)行為,必須使用keypress(用return false),但按backspace時(shí)不行,因?yàn)閎ackspace時(shí)只執(zhí)行keydown和keyup,keyup之前回退的效果已經(jīng)生效了。
          (2)對(duì)mouse來(lái)說(shuō) :mousedown-->mouseup-->click ,在IE下如果在與按下鼠標(biāo)的相同元素上松開(kāi)則產(chǎn)生click事件,如果松開(kāi)時(shí)已經(jīng)離開(kāi)最初按下時(shí)的元素了,則不會(huì)產(chǎn)生click事件;但據(jù)我觀察FF下不是這樣,FF下無(wú)論鼠標(biāo)是否在最初的元素上松開(kāi),都會(huì)產(chǎn)生click事件。

          在中文輸入法模式下:
          (1)FF
          ff1.jpgff2.jpg
          其中downup-up-是輸入法切換時(shí)的鍵盤事件
          輸入第一個(gè)字母時(shí)產(chǎn)生down-press事件,然后輸入任何字母都不會(huì)產(chǎn)生鍵盤事件, 只有按確認(rèn)輸入的鍵了,例如按space或是1,才會(huì)執(zhí)行up事件,見(jiàn)右圖。
          也就是說(shuō)錄入一次中文時(shí),不管中間過(guò)程怎么樣,整個(gè)的鍵盤事件只有3個(gè):down-press-up
          (注:以上說(shuō)的鍵盤事件都是指發(fā)生在input上的)
          2,IE
          IE1.jpgIE2.jpg
          其中downup-up-也是輸入法切換時(shí)的鍵盤事件
          然后在輸入法框里的所有按鍵都產(chǎn)生一對(duì)downup事件,包括回退和確認(rèn)都是。
          無(wú)論光標(biāo)在input還是在輸入法框按回退,都是down-up

          用style.imeMode好像無(wú)法得到當(dāng)前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.javaeye.com/topic/191555

          另:IE中onpropertychange時(shí)要用event.propertyName?? ==?? "value"
          document.getElementById('tt').attachEvent('onpropertychange',function(e){
          ????????
          for(var?item?in e){
          ????????????alert(item
          +":"+e[item]);//遍歷可看到propertyName
          ????????}
          ????});

          ? 判斷表單里的元素的值有沒(méi)有發(fā)生變化:? ???
          <script>
          ????jQuery(document).ready(
          function(){
          ??????? var?inputarr?=document.getElementsByTagName("INPUT");//TEXTAREA,SELECT等都可以這樣用
          ????????
          for(var?i=0;i<inputarr.length;i++){
          ????????inputarr[i].attachEvent('onpropertychange',
          function(e){
          ???????
          if(e.propertyName!='value')return;??//不是value改變不執(zhí)行后面的操作
          ???????else{ischanged=true}
          ????});
          ????}
          });
          ????
          </script>
          奇怪的是先jQuery,再each,再用$(this).get(0).attachEvent("onpropertychange",fn); 好像不可以
          還有
          $("textarea").bind('propertychange',function(e) {
          e.preventDefault();
          // Your code here
          });好像也不行

          主站蜘蛛池模板: 从江县| 仙游县| 仪陇县| 蚌埠市| 龙岩市| 额尔古纳市| 绥芬河市| 晴隆县| 西贡区| 凤城市| 鹤峰县| 碌曲县| 泽普县| 墨江| 柏乡县| 萍乡市| 巴彦淖尔市| 郧西县| 瑞安市| 建昌县| 宝清县| 措勤县| 惠州市| 新泰市| 嘉善县| 桃园县| 南川市| 和顺县| 湾仔区| 龙江县| 云安县| 图木舒克市| 富源县| 乌鲁木齐市| 饶平县| 本溪| 开化县| 登封市| 昭平县| 仙桃市| 鱼台县|