JavaScriptはBackspaceキーをブロックします.

5266 ワード

今日IEブラウザで発見しました.readonly=「readonly」属性を使ってテキストボックスを読み取り専用の「input type」=「text」readonly=「readonly」を設定すると、不思議な問題があります.カーソルが読み取り専用のテキストボックスに入ると、Backspaceキーを押すと、前のページにジャンプします.火狐とgoogleの下ではこのような問題はありません.この問題を解決するために、次のような処理方法を書きました.テキストボックスが読み取り専用の場合、Backspaceキーを無効にします.
コードは以下の通りです
 1 //            (Backspace)     、       
 2     function banBackSpace(e){   
 3         var ev = e || window.event;//  event     
 4         var obj = ev.target || ev.srcElement;//        
 5         var t = obj.type || obj.getAttribute('type');//         
 6         //             
 7         var vReadOnly = obj.getAttribute('readonly');
 8         //  null   
 9         vReadOnly = (vReadOnly == "") ? false : vReadOnly;
10         //  Backspace  ,           、     ,
11         //  readonly   true enabled   false ,      
12         var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea") 
13                     && vReadOnly=="readonly")?true:false;
14         //  Backspace  ,           、     ,      
15         var flag2=(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")
16                     ?true:false;        
17         
18         //  
19         if(flag2){
20             return false;
21         }
22         if(flag1){   
23             return false;   
24         }   
25     }
26 
27 window.onload=function(){
28     //         Firefox、Opera
29     document.onkeypress=banBackSpace;
30     //          IE、Chrome
31     document.onkeydown=banBackSpace;
32 }
このような処理を加えると、「読み取り専用入力ボックスがIEの下でBackspaceキーを押して前のページに戻る問題」を解決できます.