2009-04-28 72 views
2

我能夠在c#/ .net中找到解決方案,但不能用於常規web html。如果已經有答案,請告訴我,我會解決問題。Javascript正則表達式僅文本框

如何根據給定的正則表達式(例如[a-zA-Z0-9])創建僅允許某些字符(例如字母數字)的文本框?所以如果用戶試圖輸入其他東西,包括粘貼,它被刪除或不允許。

<input type="text" class="alphanumericOnly"> 
+0

你甚至試圖找到網絡上已經存在的解決方案嗎?我確信他們在那裏,我不想成爲你的打字員,所以去谷歌它,當你有關於詳情的問題,回到這裏 - 除非你想支付我爲你寫代碼。 – 2009-04-28 20:31:22

回答

4

的基本功能將是這樣:

string = string.replace(/[^a-zA-Z0-9]/g, '') 

這將替換未被[a-zA-Z0-9]描述的任何字符。

現在你既可以把它直接到你的元素聲明:

<input type="text" class="alphanumericOnly" onkeyup="this.value=this.value.replace(/[^a-zA-Z0-9]/g, '')"> 

或(如您使用的類提示)分配此行爲以每input元素與類alphanumericOnly

var inputElems = document.getElemenstByTagName("input"); 
for (var i=0; i<inputElems.length; i++) { 
    var elem = inputElems[i]; 
    if (elem.nodeName == "INPUT" && /(?:^|\s+)alphanumericOnly(?:\s+|$)/.test(elem.className) { 
     elem.onkeyup = function() { 
      this.value = this.value.replace(/[^a-zA-Z0-9]/g, ''); 
     } 
    } 
} 

但是,使用jQuery或其他JavaScript框架可能會更容易:

$("input.alphanumericOnly").bind("keyup", function(e) { 
    this.value = this.value.replace(/[^a-zA-Z0-9]/g, ''); 
}); 
0

假設你有存儲爲變量input輸入...

input.onkeyup(function(e) { 
    this.value = this.value.replace(/\W/g, ''); 
} 

每一個按鍵後,輸入的值將被剝奪的任何非字母數字字符。

0

如果您在鍵盤事件中使用.replace方法,輸入將會隨鍵入的非字母數字字符一起閃爍,這看起來馬虎,並且不符合像我這樣的OCD人員。

一個清潔的方法是綁定到按鍵事件,並否認字符之前,他們甚至到達輸入,如下所示:

$('.alphanumericOnly').keypress(function(e){ 
    var key = e.which; 
    return ((key >= 48 && key <= 57) || (key >= 65 && key <= 90) || (key >= 95 && key <= 122)); 
}); 

基本鍵碼的名單,可以發現here如果這個特定的設置不適合您的特定需求。