JavaScript屏蔽Backspace鍵的實現(xiàn)代碼
今天在IE瀏覽器下發(fā)現(xiàn),當(dāng)把使用readonly="readonly"屬性將文本框設(shè)置成只讀<input type="text" readonly="readonly"/>時有一個奇怪的問題:如果光標(biāo)進(jìn)入只讀文本框,然后按下Backspace鍵,就會跳轉(zhuǎn)到上一個頁面,效果就像點擊了瀏覽器的后退按鈕返回前一個頁面一樣,而在火狐和google下沒有這樣的問題出現(xiàn),為了解決這個問題,寫了一個如下的處理方法,如果文本框是只讀的,那么就禁用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;
//當(dāng)敲Backspace鍵時,事件源類型為密碼或單行、多行文本的,
//并且readonly屬性為true或enabled屬性為false的,則退格鍵失效
var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea")
&& vReadOnly=="readonly")?true:false;
//當(dāng)敲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鍵回退到前一個頁面的問題了"
ps:用JS屏蔽backspace(退格刪除)鍵或某一個指定鍵的完美代碼
當(dāng)我們的網(wǎng)頁內(nèi)有一個只讀屬性的表單時,如下:
<input type="text" readonly="readonly" name="HuoShangName" id="HuoShangName" />
上面的這個文本域只是用來向用戶展示一些信息的,用戶不能對其進(jìn)行更改,所以加上了“readonly='readonly'”的只讀屬性,但是在IE8下面,從外觀上是看不出來它和其它正常文本域的區(qū)別的,所以有的用戶可能會對其進(jìn)行一些刪除或者添加內(nèi)容的一些操作,比如當(dāng)光標(biāo)位于這個只讀屬性的文本域內(nèi)時,如果用戶按下了backspace(退格刪除鍵),那么就會導(dǎo)致整個瀏覽器的后退,會讓人很是郁悶,這時我們要做的就是屏蔽這個只讀文本域上的一些指定的鍵,使用戶按下這些鍵時不會引起瀏覽器的退后,刷新,或者前進(jìn)等動作。
<input class="input w350" type="text" readonly="readonly" onkeydown="PingBi('8')" name="HuoShangName" id="HuoShangName" />
上面的代碼中,onkeydown表示的是當(dāng)按下按鍵時的意思,下面來JS函數(shù)pingbi的具體代碼,也是非常簡單的:
function PingBi(id){
var k=window.event.keyCode;
if(k==id){window.event.keyCode=0;window.event.returnValue=false;return false;}
}
好了,這樣當(dāng)光標(biāo)位于只讀屬性的文本域內(nèi)時,用戶按下backspace(退格刪除鍵)時就不會引起瀏覽器的后退了。
總結(jié)
以上所述是小編給大家介紹的JavaScript屏蔽Backspace鍵的實現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
bootstrap datetimepicker日期插件超詳細(xì)使用方法介紹
本篇文章主要介紹了bootstrap datetimepicker日期插件超詳細(xì)使用方法介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
JavaScript中內(nèi)置函數(shù)Map()的使用
Map()是JavaScript中內(nèi)置的一種數(shù)據(jù)結(jié)構(gòu),它允許您將鍵值對映射到任意類型的值,主要介紹了JavaScript中內(nèi)置函數(shù)Map()的使用,感興趣的可以了解一下2023-05-05
JavaScript時間操作之年月日星期級聯(lián)操作
這篇文章主要介紹了JavaScript時間操作之級聯(lián)日期選擇操作,涉及到年、月、日、星期,感興趣的小伙伴們可以參考一下2016-01-01
JavaScript實現(xiàn)復(fù)制內(nèi)容到粘貼板代碼
最近做了一個前端項目,其中有需求:通過button直接把input或者textarea里的值復(fù)制到粘貼板里。下面小編給大家分享JavaScript實現(xiàn)復(fù)制內(nèi)容到粘貼板代碼,需要的朋友參考下2016-03-03
JavaScript字符串轉(zhuǎn)數(shù)字的簡單實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于JavaScript字符串轉(zhuǎn)數(shù)字的簡單實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

