JavaScriptはどのようにBackspaceキーを禁止しますか?

1579 ワード

今日IEブラウザで発見しました.readonly=「readonly」属性を使ってテキストボックスを読み取り専用に設定した時、不思議な問題があります.カーソルが読み取り専用のテキストボックスに入ったら、Backspaceキーを押すと、前のページにジャンプします.効果はビューアの後退ボタンをクリックして前のページに戻るようになります.この問題を解決するために、テキストボックスが読み取り専用の場合は、Backspaceキーを無効にします.コードは以下の通りです

//            (Backspace)     、       
 function banBackSpace(e){ 
  var ev = e || window.event;//  event   
  var obj = ev.target || ev.srcElement;//      
  var t = obj.type || obj.getAttribute('type');//        
  //             
  var vReadOnly = obj.getAttribute('readonly');
  //  null   
  vReadOnly = (vReadOnly == "") ? false : vReadOnly;
  //  Backspace  ,           、     ,
  //  readonly   true enabled   false ,      
  var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea") 
     && vReadOnly=="readonly")?true:false;
  //  Backspace  ,           、     ,      
  var flag2=(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")
     ?true:false;  
  
  //  
  if(flag2){
   return false;
  }
  if(flag1){ 
   return false; 
  } 
 }

window.onload=function(){
 //         Firefox、Opera
 document.onkeypress=banBackSpace;
 //         IE、Chrome
 document.onkeydown=banBackSpace;
}
このような処理を加えると、「読み取り専用入力ボックスがIEの下でBackspaceキーを押して前のページに戻る」という問題を簡単に解決できます.
この文章が好きで、引き続き小编の更新された文章に注目してください.