2013-06-25 48 views
0
<script type="text/javascript"> 
function numbersonly(e){ 
var unicode=e.charCode? e.charCode : e.keyCode 
if (unicode!=8){ //if the key isn't the backspace key (which we should allow) 
if (unicode<65||unicode>90) //if not a Capital Alphabet 
return false //disable key press 
} 
} 
</script> 

<form> 
<input type="text" size=18 onkeyup="return numbersonly(event)"> 
</form> 

此代碼工作正常。但IE不支持charcode。在Keycode中,65到90範圍包括大寫和小寫字母。如何解決這個問題?跨瀏覽器問題與鍵盤驗證

+2

65至90範圍包括大寫和小寫字母?小寫從97開始 – exexzian

+0

這是charcode。我指的是KeyCode。 – Pearl

+0

charcode和keycode是相同還是不同? – Pearl

回答

1

它不會通過簡單的一個,你必須檢查很多條件在case像這樣處理,

檢查大寫鎖定或不

使用此功能對於這一點,

function isCapslock(e){ 

    e = (e) ? e : window.event; 

    var charCode = false; 
    if (e.which) { 
     charCode = e.which; 
    } else if (e.keyCode) { 
     charCode = e.keyCode; 
    } 

    var shifton = false; 
    if (e.shiftKey) { 
     shifton = e.shiftKey; 
    } else if (e.modifiers) { 
     shifton = !!(e.modifiers & 4); 
    } 

    if (charCode >= 97 && charCode <= 122 && shifton) { 
     return true; 
    } 

    if (charCode >= 65 && charCode <= 90 && !shifton) { 
     return true; 
    } 

    return false; 

} 

http://dougalmatthews.com/articles/2008/jul/2/javascript-detecting-caps-lock/

另外

只是在jquery中使用e.which。他們將所有瀏覽器的這個值標準化。您可以檢查e.shiftKey

來源Using e.keyCode || e.which; how to determine the differance between lowercase and uppercase?

+0

我們可以在Javascript中使用e.which。 JavaScript也爲所有瀏覽器規範化了這個值。 – Pearl