您好,登錄后才能下訂單哦!
小編給大家分享一下JavaScript如何屏蔽Backspace鍵,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
今天在IE瀏覽器下發(fā)現(xiàn),當(dāng)把使用readonly="readonly"
屬性將文本框設(shè)置成只讀<input type="text" readonly="readonly"/>
時(shí)有一個(gè)奇怪的問題:如果光標(biāo)進(jìn)入只讀文本框,然后按下Backspace鍵,就會(huì)跳轉(zhuǎn)到上一個(gè)頁(yè)面,效果就像點(diǎn)擊了瀏覽器的后退按鈕返回前一個(gè)頁(yè)面一樣,而在火狐和google下沒有這樣的問題出現(xiàn),為了解決這個(gè)問題,寫了一個(gè)如下的處理方法,如果文本框是只讀的,那么就禁用Backspace鍵。
代碼如下:
//處理鍵盤事件 禁止后退鍵(Backspace)密碼或單行、多行文本框除外 function banBackSpace(e){ var ev = e || window.event;//獲取event對(duì)象 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鍵時(shí),事件源類型為密碼或單行、多行文本的, //并且readonly屬性為true或enabled屬性為false的,則退格鍵失效 var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea") && vReadOnly=="readonly")?true:false; //當(dāng)敲Backspace鍵時(shí),事件源類型非密碼或單行、多行文本的,則退格鍵失效 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鍵回退到前一個(gè)頁(yè)面的問題了"
ps:用JS屏蔽backspace(退格刪除)鍵或某一個(gè)指定鍵的完美代碼
當(dāng)我們的網(wǎng)頁(yè)內(nèi)有一個(gè)只讀屬性的表單時(shí),如下:
<input type="text" readonly="readonly" name="HuoShangName" id="HuoShangName" />
上面的這個(gè)文本域只是用來向用戶展示一些信息的,用戶不能對(duì)其進(jìn)行更改,所以加上了“readonly='readonly'”的只讀屬性,但是在IE8下面,從外觀上是看不出來它和其它正常文本域的區(qū)別的,所以有的用戶可能會(huì)對(duì)其進(jìn)行一些刪除或者添加內(nèi)容的一些操作,比如當(dāng)光標(biāo)位于這個(gè)只讀屬性的文本域內(nèi)時(shí),如果用戶按下了backspace(退格刪除鍵),那么就會(huì)導(dǎo)致整個(gè)瀏覽器的后退,會(huì)讓人很是郁悶,這時(shí)我們要做的就是屏蔽這個(gè)只讀文本域上的一些指定的鍵,使用戶按下這些鍵時(shí)不會(huì)引起瀏覽器的退后,刷新,或者前進(jìn)等動(dòng)作。
<input class="input w350" type="text" readonly="readonly" onkeydown="PingBi('8')" name="HuoShangName" id="HuoShangName" />
上面的代碼中,onkeydown表示的是當(dāng)按下按鍵時(shí)的意思,下面來JS函數(shù)pingbi的具體代碼,也是非常簡(jiǎn)單的:
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)時(shí),用戶按下backspace(退格刪除鍵)時(shí)就不會(huì)引起瀏覽器的后退了。
以上是“JavaScript如何屏蔽Backspace鍵”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。