-1

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 绑定有一些误解?身份证

4

3 回答 3

2

仅在某些情况下阻止字符输入在 javascript 中非常复杂,因为在keypress事件(您想要阻止的事件)您不知道value输入之后,而只知道keycode按下的键(甚至不知道结果字符肯定)。此外,您将需要关心特殊键,例如 or 。

我会推荐这样的东西:

$("input").on("keypress keyup paste", function(e) {
    this.value = this.value.replace(/[^a-zA-Z0-9]/g, '');
});
于 2012-11-26T14:20:03.987 回答
1

如果限制您输入的字符,您可以替换不是字母数字的字符。

<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 只允许字母数字

于 2012-11-26T14:20:29.027 回答
0

事实证明,我需要执行以下操作:

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

charCode 将给出键入字母的实际字符代码,而不是最后按下的键的 ascii 代码

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

于 2012-11-26T14:17:36.227 回答