2012-08-08 20 views
6

我想禁用所有其他字符輸入文本輸入。

由於得到$你必須按轉變 - 鍵和 - 鍵。我不知道你將如何獲得這樣的keyCode?

+0

的可能的複製[什麼JavaScript KeyCodes?](http://stackoverflow.com/questions/5603195/what-are-the-javascript-keycodes) – 2017-02-03 07:39:03

回答

5

鍵碼只與鍵相關。 $是一個字符,通過兩個鍵,Shift鍵和4取得使用onkeydown

編輯時沒有鍵碼明確了$:有人指出,愛德華是onkeypress使用組合鍵,確實有鍵碼對組合。每天學習新東西:)

Here's some code,編輯自MDN提供的onkeydown示例,以檢測按鍵鍵碼。

Here's the fiddle已更新爲Firefox-friendly,使用this S.O. post的幫助。如果你這樣做,JQuery解決方案也可以工作。

+0

編輯器中的小提琴在firefox12中給出了這個結果:'keyCode for the key pressed:0'(on我按任何鍵..) – GitaarLAB 2012-08-08 16:30:41

+0

@GitaarLAB有多奇怪。適用於IE和Chrome。我無法想象Firefox不會支持'onkeypress',雖然換成onkeydown可以在Firefox中工作。 – 2012-08-08 16:33:35

+0

看看[這個S.O.線程的信息onkeypress在Firefox](http://stackoverflow.com/questions/4496910/onkeypress-event-not-working-in-firefox)懷疑它的唯一一個 – 2012-08-08 16:35:35

2

然後不要使用這種方式來解決你的問題:因爲你無法預測每個鍵盤佈局總是會有$ -sign作爲shift + 4輸入。
你仍然可以得到keycode 4,並檢查是否按下了shift,但是你不能確定這一點!

因此最好是簡單地替換字段中的所有非法字符(在提交數據之前)。想一想:str.replace()
您還可以在輸入框的onkeyup事件中檢查您的非法字符集,在您輸入時有效地替換所有非法字符!
喜歡:onkeyup="this.value.replace(/[your illegal characters]/gi, '')"
這應該做你想做的。

請注意:您不應該信任瀏覽器輸入,並且仍然應該在您的接收腳本中過濾此輸入!

祝您好運!

5

沒有onkeydown鍵碼,如先前通過ngmiceli

說雖然,onkeypress鍵碼存在並且是等於36

JavaScript Event KeyCode Test Page

+0

+1感謝您的支持! – 2012-08-08 16:21:30

1

沒有爲$無鑰匙代碼,因爲它不是一個有效的密鑰 - 它通過某種轉換器來訪問。

通常,您將執行檢查以查看移位器是否處於活動狀態,並偵聽相關密鑰上的keypress事件。事情是這樣的一個QWERTY佈局在您的實例:

var shiftPressed = false; 

$(window).keydown(function(e) { 
    if(e.which == 16) { shiftPressed = true; } 
    if(e.which == 52 && shiftPressed) 
    { 
     // Do whatever here... 
    } 
}); 

$(window).keyup(function(e) { 
    if(e.which == 16) { shiftPressed = false; } 
}); 
0

onkeypress事件 - Unicode字符代碼是:36

的onkeydown - Unicode的KEY碼爲:52