2012-11-26 44 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

相关问题