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)文章
js學(xué)習(xí)總結(jié)之dom2級事件基礎(chǔ)知識詳解
這篇文章主要為大家詳細介紹了js學(xué)習(xí)總結(jié)之dom2級事件基礎(chǔ)知識,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
JS中利用localStorage防止頁面動態(tài)添加數(shù)據(jù)刷新后數(shù)據(jù)丟失
本文給大家分享一段js代碼利用利用localStorage防止頁面動態(tài)添加數(shù)據(jù)刷新后數(shù)據(jù)丟失問題,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友參考下2017-03-03
js獲取select標(biāo)簽的值且兼容IE與firefox
本篇文章主要介紹了js獲取select標(biāo)簽的值且兼容IE與firefox。需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12
JavaScript立即執(zhí)行函數(shù)的三種不同寫法
這篇文章主要介紹了JavaScript立即執(zhí)行函數(shù)的三種不同寫法,需要的朋友可以參考下2014-09-09
javascript獲得網(wǎng)頁窗口實際大小的示例代碼
網(wǎng)頁窗口實際大小如何獲得,可行的方法有很多,在本文將為大家介紹下使用javascript是怎樣做到的2013-09-09

