2013-03-06 102 views
3

這裏是一個小提琴開始 - http://jsfiddle.net/zuVpx/1/JavaScript的正則表達式來禁止所有特殊字符

Javascript代碼:

<script> 
    function validate(e) { 
     var regex = new RegExp("[a-zA-Z0-9]"); 
     var key = e.keyCode || e.which; 
     key = String.fromCharCode(key); 

     if(!regex.test(key)) { 
      e.returnValue = false; 
      if(e.preventDefault) { 
       e.preventDefault(); 
      } 
     } 
    } 
</script> 

HTML代碼:

<input type="text" onkeypress="validate(event)" /> 

我只想要個字符和數字。像退格鍵,刪除,大寫鎖和箭頭鍵等鍵應該工作。

在此先感謝。

+0

看看這個http://stackoverflow.com/questions/995183/how-to-allow-only-numeric-0-9-in-html-inputbox-using-jquery – Kotzilla 2013-03-06 09:36:01

回答

5

添加id到輸入(例如, '驗證'),並使用:

document.querySelector('#validate').onkeypress = validate; 

function validate(e) { 
     e = e || event; 
     return /[a-z0-9]/i.test(
        String.fromCharCode(e.charCode || e.keyCode) 
       ) || !e.charCode && e.keyCode < 48; 
} 

JSFiddle

+0

它不適用於Mozilla 。 – Ashwin 2013-03-06 11:24:26

+0

真的嗎?它必須是Mozilla的舊版本。這裏使用Firefox 19.0,即使在IE8中也是如此。嘗試使用'document.getElementById('validate')'而不是'document.querySelector',或者更新瀏覽器。 – KooiInc 2013-03-06 12:54:16

+0

我發現了這個問題。問題是keyCode - 對於例如#和'end'的密鑰(home,end等)重複35到40個密碼(至少在這裏是我的Mozilla 16;)。 – Ashwin 2013-03-07 07:18:18

1

如何使用附加的if子句?喜歡的東西...

key.charCodeAt(0) > 32 

所以......

function validate(e) { 
    var regex = new RegExp("[a-zA-Z0-9]"); 
    var key = e.keyCode || e.which; 
    key = String.fromCharCode(key); 

    if(!regex.test(key) && key.charCodeAt(0) > 32) { 
     e.returnValue = false; 
     if(e.preventDefault) { 
      e.preventDefault(); 
     } 
    } 
} 
0

爲了克服這個問題,例如左箭頭鍵產生與相同的key值鍵,你可以使用

function validate(e) { 
    e = e || window.event; 
    var bad = /[^\sa-z\d]/i, 
     key = String.fromCharCode(e.keyCode || e.which); 

    if (e.which !== 0 && e.charCode !== 0 && bad.test(key)) { 
     e.returnValue = false; 
     if (e.preventDefault) { 
      e.preventDefault(); 
     } 
    } 
} 

所有可打印字符應該產生一個非零e.whiche.charCode值。
JavaScript Madness: Keyboard Events

jsFiddle

上面假定空格是有效的 - 如果沒有,只需從否定字符類中移除\s

2

嘗試

/[-!$%^&*()_+|~=`\\#{}\[\]:";'<>?,.\/]/.test(your_variable) 

如果有匹配,則返回true。