JavaScript屏蔽Backspace鍵


  今天在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鍵回退到前一個頁面的問題了"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM