首頁  >  文章  >  web前端  >  實作js禁止Backspace鍵使瀏覽器後退

實作js禁止Backspace鍵使瀏覽器後退

巴扎黑
巴扎黑原創
2017-09-02 14:04:402202瀏覽

下面小編就為大家帶來一篇js禁止Backspace鍵使瀏覽器後退的實作方法。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧

在專案中遇到按下Backspace鍵讓瀏覽器後退的問題,上網搜了幾種解決方案都不太理想。於是集眾人之智,採眾家之長,歸納如下:

#1、在公用js中定義阻止Backspace的方法



####
function banBackSpace(e){
 var ev = e || window.event;
 //各种浏览器下获取事件对象
 var obj = ev.relatedTarget || ev.srcElement || ev.target ||ev.currentTarget;
 //按下Backspace键
 if(ev.keyCode == 8){
 var tagName = obj.nodeName //标签名称
 //如果标签不是input或者textarea则阻止Backspace
 if(tagName!='INPUT' && tagName!='TEXTAREA'){
  return stopIt(ev);
 }
 var tagType = obj.type.toUpperCase();//标签类型
 //input标签除了下面几种类型,全部阻止Backspace
 if(tagName=='INPUT' && (tagType!='TEXT' && tagType!='TEXTAREA' && tagType!='PASSWORD')){
  return stopIt(ev);
 }
 //input或者textarea输入框如果不可编辑则阻止Backspace
 if((tagName=='INPUT' || tagName=='TEXTAREA') && (obj.readOnly==true || obj.disabled ==true)){
  return stopIt(ev);
 }
 }
}
function stopIt(ev){
 if(ev.preventDefault ){
 //preventDefault()方法阻止元素发生默认的行为
 ev.preventDefault();
 }
 if(ev.returnValue){
 //IE浏览器下用window.event.returnValue = false;实现阻止元素发生默认的行为
 ev.returnValue = false;
 }
 return false;
}
###方法註解寫的很清晰了,這裡不過度解釋。 ############2、頁面載入完成就呼叫該方法##################
$(function(){
 //实现对字符码的截获,keypress中屏蔽了这些功能按键
 document.onkeypress = banBackSpace;
 //对功能按键的获取
 document.onkeydown = banBackSpace;
 })
#########註:  ######按鍵事件觸發順序: keydown -> keypress ->textInput -> keyup######有問題:select下拉清單展開後,無法取得鍵盤事件,此時​​按Backspace鍵,瀏覽器還是會回退到歷史;解決方法:將select下拉框改為easyUI的combobox;###

以上是實作js禁止Backspace鍵使瀏覽器後退的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn