簡體   English   中英

如何使用jQuery指定文本框中允許的字符?

[英]How to specify which characters are allowed in a textbox with jQuery?

http://jsfiddle.net/WhP8q/

我試圖將輸入限制為字母數字,0-9,AZ,az。

我正在參考的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

在javascript中,僅在某些情況下阻止字符輸入非常復雜,因為在keypress事件 (您要阻止的事件)中,您不知道輸入的后value ,而僅知道所按下鍵的keycode (而不是甚至肯定是生成的字符)。 另外,您將需要注意諸如或的特殊鍵。

我建議這樣的事情:

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

如果您限制輸入的字符,則可以替換非字母數字的字符。

<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只允許字母數字

原來,我需要執行以下操作:

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

charCode將給出鍵入字母的實際字符代碼,而不是最后一次按鍵的ASCII代碼

參見http://api.jquery.com/keypress/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM