2013-05-08 99 views
0

Javascript函數可避免特殊字符。它正在按預期工作與alpha & numbers.only問題是,當我需要包括 - ,. (k> = 188 & & k < = 190) - 這是行不通的。我究竟做錯了什麼?Onkeypress,javascript未驗證特殊字符

var k; 
    document.all ? k = e.keyCode : k = e.which; 
    return ((k > 64 && k < 91) || (k > 96 && k < 123) || (k >= 188 && k <= 190)|| k == 8 || k == 32 || (k >= 48 && k <= 57)); 
+0

那麼,這有什麼問題?連字符的鍵碼是45,這會導致您的邏輯返回false。這不是用意嗎? – 2013-05-08 21:09:34

+1

爲什麼不檢查像'/ 0-9a-z/i'這樣的正則表達式的字母數字? – bfavaretto 2013-05-08 21:12:08

+0

我逗號破折號\t 189(連字符) 期\t 190 http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes – tv4free 2013-05-08 21:21:33

回答

1

這是我最新的代碼,它將支持所有的瀏覽器。 功能isAlphaNumeric(evtGet){

var browser = navigator.appName; 
    if (browser == "Microsoft Internet Explorer" || browser == "Mozilla Firefox") { 
     var keyGet = evtGet.keyCode; 
    } else { 
     var keyGet = evtGet.which; //(window.Event) ? evtGet.which : evtGet.keyCode; 
    } 
    alert(keyGet); 
     if ((keyGet > 47 && keyGet < 58) || (keyGet > 64 && keyGet < 91) || (keyGet > 96 && keyGet < 123) || (keyGet == 9) || (keyGet == 32) || (keyGet == 8) || (keyGet == 0) || (keyGet == 13)||(keyGet==110)) 
      return; 
     else 
      if (browser == "Microsoft Internet Explorer" || browser == "Mozilla Firefox") 
      window.event.returnValue = null; 
     else 
      evtGet.preventDefault(); 
} 

把上面的代碼在jsp

的報頭中,並從輸入字段等 調用onkeypress事件= 「返回isAlphaNumeric(事件,THIS.VALUE);」>

假設你想在代碼按照您的要求發生變化,有一個警告框,請運行該代碼1然後點擊鍵盤,它會顯示鍵碼按您的要求

例子 - 你想在字段中輸入(。)它會顯示你的密鑰代碼爲點號47,你可以寫(keyGet==47)