JS禁用瀏覽器退格鍵實現(xiàn)思路及代碼
上周提交了一個項目(內(nèi)部使用的),一同事提出個BUG,說要禁用退格鍵(backspace或者叫后退鍵),因為這和他的習(xí)慣不一樣,擔(dān)心萬一文字錄入一半,他按了退格鍵,那整個頁面的內(nèi)容就白填了,然后信誓旦旦的說他做的系統(tǒng)中后退鍵都是不能用的,我這個系統(tǒng)有問題,當(dāng)時因為事多,只把這個問題記錄下來了,后來查了下他以前做的項目,也沒有對退格鍵進行處理。自己的項目都沒處理,到我這嚷嚷來了,算了,不和年輕人一般見識。不就禁用個后退鍵,簡單。
其實說禁用也不是完全禁用,后退鍵在各瀏覽器下默認為點擊了一下后退按鈕,只要保證正常的文字錄入還可以用,其他情況下的退格鍵一律禁掉??创a吧。
當(dāng)鍵盤敲下后退鍵(Backspace)后
1、禁止瀏覽器自動后退
2、但不影響密碼、單行文本、多行文本輸入框等的回退操作
解決方案:
網(wǎng)上搜了一下,發(fā)現(xiàn)有不少解決方案,相比較之下,zywang的方案較佳
在其基礎(chǔ)上,進行補充和完善,以滿足需求,整理后的代碼如下:
代碼一、核心代碼:
function forbidBackSpace(e) { var ev = e || window.event; //獲取event對象 var obj = ev.target || ev.srcElement; //獲取事件源 var t = obj.type || obj.getAttribute('type'); //獲取事件源類型 //獲取作為判斷條件的事件類型 var vReadOnly = obj.readOnly; var vDisabled = obj.disabled; //處理undefined值情況 vReadOnly = (vReadOnly == undefined) ? false : vReadOnly; vDisabled = (vDisabled == undefined) ? true : vDisabled; //當(dāng)敲Backspace鍵時,事件源類型為密碼或單行、多行文本的, //并且readOnly屬性為true或disabled屬性為true的,則退格鍵失效 var flag1 = ev.keyCode == 8 && (t == "password" || t == "text" || t == "textarea") && (vReadOnly == true || vDisabled == true); //當(dāng)敲Backspace鍵時,事件源類型非密碼或單行、多行文本的,則退格鍵失效 var flag2 = ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea"; //判斷 if (flag2 || flag1) return false; } //禁止后退鍵 作用于Firefox、Opera // document.onkeypress = forbidBackSpace; //禁止后退鍵 作用于IE、Chrome document.onkeydown = forbidBackSpace;
代碼二、
function bindBackEvent() { //防止退格鍵 $(document).keydown(function(e){ e = window.event || e; var code = e.keyCode || e.which; if (code == 8) { var src = e.srcElement || e.target; var tag = src.tagName; if (tag != "INPUT" && tag != "TEXTAREA") { e.returnValue = false; return false; } else if ((tag == "INPUT" || tag == "TEXTAREA") && src.readOnly == true) { e.returnValue = false; return false; } } }); }
相關(guān)文章
javascript 控制 html元素 顯示/隱藏實現(xiàn)代碼
javascript 控制 html元素 顯示/隱藏,下面是一些逐步的實現(xiàn)原理。2009-09-09基于Nuxt.js項目的服務(wù)端性能優(yōu)化與錯誤檢測(容錯處理)
這篇文章主要介紹了基于Nuxt.js項目的服務(wù)端性能優(yōu)化與錯誤檢測(容錯處理),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10svg插入foreignObject無法響應(yīng)事件解決
這篇文章主要為大家介紹了svg插入foreignObject無法響應(yīng)事件解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10解決layui動態(tài)添加的元素click等事件觸發(fā)不了的問題
今天小編就為大家分享一篇解決layui動態(tài)添加的元素click等事件觸發(fā)不了的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09原生javascript AJAX 三級聯(lián)動的實現(xiàn)代碼
這篇文章主要介紹了原生javascript AJAX 三級聯(lián)動的實現(xiàn)代碼,非常不錯代碼簡單易懂,具有一定的參考借鑒價值,需要的朋友可以參考下2018-05-05