【问题标题】:How to specify which characters are allowed in a textbox with jQuery?如何使用 jQuery 指定文本框中允许哪些字符?
【发布时间】:2012-11-26 14:07:00
【问题描述】:

http://jsfiddle.net/WhP8q/

我正在尝试将输入限制为字母数字、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 绑定有一些误解?身份证

【问题讨论】:

标签: javascript jquery textfield


【解决方案1】:

仅在某些情况下阻止字符输入在 javascript 中非常复杂,例如在 keypress event(您想要阻止的那个)中,您不知道之后的输入 value,而只知道 @987654322 @ 按下的键(甚至不是生成的字符)。此外,您需要注意特殊键,例如 or 。

我会推荐这样的东西:

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

【讨论】:

    【解决方案2】:

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

    <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

    【讨论】:

    • 为什么绝对没有必要的 if 语句?
    • 另外,仅在 keyup 上挂钩会导致闪烁并且无法检测到粘贴等。
    【解决方案3】:

    原来,我需要做以下事情:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      相关资源
      最近更新 更多