有只小跳蛙
2019-10-09 15:48:28
問題:將HTML輸入中允許的字符限制為az AZ。對于業(yè)務(wù)需求,這需要在KeyPress上完成,以便甚至不允許字符甚至出現(xiàn)在輸入中。Tab,Enter,箭頭,退格鍵,Shift鍵都是允許的。用戶必須能夠自由地移入和移出文本框,刪除字符等。這是我的代碼的起點...var keyCode = (e.keyCode ? e.keyCode : e.which);但是,我在keyCode中獲得的每個值都不對應(yīng)于我在網(wǎng)絡(luò)上看到的任何字符表。例如,字符“ h”的返回碼為104。KeyCode與CharCode是否不同?哪個代碼包含控制字符?我需要轉(zhuǎn)換嗎?如何限制輸入到az AZ并允許JavaScript中需要的鍵?
3 回答

慕絲7291255
TA貢獻1859條經(jīng)驗 獲得超6個贊
您所有問題的答案都可以在下一頁找到。
...但總而言之:
您可以從中可靠地獲取字符信息(與鍵碼信息相對)的唯一事件是keypress事件。
在這種情況keypress下,除IE <= 8以外的所有瀏覽器都將字符代碼存儲在事件的which屬性中。這些瀏覽器中的大多數(shù)(但不是全部)也將字符代碼存儲在charCode屬性中。
在這種情況keypress下,IE <= 8將字符代碼存儲在keyCode屬性中。
這意味著要獲取與按鍵對應(yīng)的字符代碼,假設(shè)按鍵事件對象存儲在名為e:
var charCode = (typeof e.which == "number") ? e.which : e.keyCode
通常,這將返回一個字符代碼,其中一個存在,否則為0。在某些情況下,您不應(yīng)獲得非零值:
在Opera <10,50鍵Insert,Delete,Home和End
在Konqueror的最新版本中,用于非字符密鑰。
第一個問題的解決方法有點復(fù)雜,并且也需要使用該keydown事件。
添加回答
舉報
0/150
提交
取消