我們?cè)谡鎸?shí)的項(xiàng)目開(kāi)發(fā)中經(jīng)常會(huì)使用JS 對(duì)鍵盤上的一些按鍵進(jìn)行禁用,常見(jiàn)的比如說(shuō)退格鍵(backspace/ 后退鍵),我在一個(gè)項(xiàng)目中就遇到過(guò)在頁(yè)面編輯的時(shí)候禁用掉退格鍵,因?yàn)橥烁矜I會(huì)發(fā)生頁(yè)面后退,這樣編輯的內(nèi)容都會(huì)失去了,非常的惡心人。ok ,廢話少說(shuō),直接上代碼。
<script type="text/javascript">
//處理鍵盤事件 禁止后退鍵(Backspace)密碼或單行、多行文本框除外
function forbidBackSpace(e) {
var ev = e || window.event; //獲取event對(duì)象
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鍵時(shí),事件源類型為密碼或單行、多行文本的,
//并且readOnly屬性為true或disabled屬性為true的,則退格鍵失效
var flag1 = ev.keyCode == 8 && (t == "password" || t == "text" || t == "textarea") && (vReadOnly == true || vDisabled == true);
//當(dāng)敲Backspace鍵時(shí),事件源類型非密碼或單行、多行文本的,則退格鍵失效
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;
</script>
posted on 2012-01-31 15:57
墻頭草 閱讀(5413)
評(píng)論(5) 編輯 收藏