2012-11-26 45 views
-1

http://jsfiddle.net/WhP8q/如何使用jQuery指定文本框中允許使用哪些字符?

我想限制輸入到字母數字,0-9,A-Z,A-Z。

ASCII碼錶我我引用:http://www.asciitable.com/ 這裏是我到目前爲止

$(function() { 
    $("input").bind("keydown paste", function(e) { 
     var code = (e.keyCode ? e.keyCode : e.which); 
     var c = code; 
     var letterAllowed = ((c > 47 && c < 58) || (c > 64 && c < 90) || (c > 96 && c < 123)) 
     if (code > 32 && !letterAllowed) { 
      return false; 
     } 
    }); 
});​ 

現在,波浪號(〜)字符從獲得輸入到現場阻止,但其他特殊/移位字符(如!@#$%)全部輸入到文本字段中。 我很確定我的邏輯是正確的,但我的問題是對javascript綁定有些誤解? IDK的

+0

嗯,你的意思是,你必須用'paste'事件的問題嗎?如果是這樣,你是否認爲'keydown'是單個字符,'paste'可以是多個字符的事實? –

+0

keyCode引用按下的鍵,而不是它將輸入的字符。換檔字符是Shift鍵代碼和被按下的鍵的組合。要查看此操作,請訪問http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes – jonhopkins

+1

請參閱: http://jsfiddle.net/lesson8/HkEuf/1/ 您可以在上面的代碼中添加字母代碼。 或 試試這個.. http://jsfiddle.net/DHCUg/ –

回答

2

僅在某些情況下防止字符輸入在javascript中非常複雜,如在keypress event(您想要防止的那個)中,您不知道之後的輸入爲value,但只有按下的鍵的keycode(甚至沒有確定的結果字符)。另外,你需要關心特殊的鍵或者。

我建議是這樣的:

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

事實證明,我需要做到以下幾點:

$("input").keypress(function(e){ 
     var code = e.charCode; 

則charCode會給輸入字母的實際字符代碼,而不是最後的按鍵

ASCII碼

看到http://api.jquery.com/keypress/

1

在限制你輸入字符的情況下,可以更換這是不是alphanumberic的字符。取自

<input type='text' id="txtAlphaNumeric"/> 
<input type='text' id="txtNumeric"/> 
<input type='text' id="txtAlphabet"/> 
<script type="text/javascript"> 
$(function() { 
    $('#txtNumeric').keyup(function() { 
     if (this.value.match(/[^0-9]/g)) { 
      this.value = this.value.replace(/[^0-9]/g, ''); 
     } 
    }); 
    $('#txtAlphabet').keyup(function() { 
     if (this.value.match(/[^a-zA-Z]/g)) { 
      this.value = this.value.replace(/[^a-zA-Z]/g, ''); 
     } 
    }); 
    $('#txtAlphaNumeric').keyup(function() { 
     if (this.value.match(/[^a-zA-Z0-9]/g)) { 
      this.value = this.value.replace(/[^a-zA-Z0-9]/g, ''); 
     } 
    }); 
}); 
</script> 

答:jquery allow only alphanumeric

+0

爲什麼絕對不必要的if語句? – Bergi

+0

另外,只鉤住'keyup'會導致閃爍,不檢測粘貼等。 – Bergi

相關問題