【问题标题】:Enter only digits in a textbox在文本框中仅输入数字
【发布时间】:2016-03-17 07:54:55
【问题描述】:

我用这个函数在文本框中只输入数字,它起作用了。

function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    return true;
}

但客户要求我限制 - 符号,因此用户不应输入 - 符号。所以我把代码修改成这样:

function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode == 45)
        return false;

    return true;
}

现在不行了,它也允许字母,为什么?

【问题讨论】:

标签: javascript jquery asp.net dom-events


【解决方案1】:

你需要||在群里:

function isNumberKey(evt) {
  var charCode = (evt.which) ? evt.which : event.keyCode;
  var bool = (charCode > 31) && (charCode < 48 || charCode > 57 || String.fromCharCode(charCode) == "-");

  return !bool;

}
&lt;input type="text" onkeypress='return isNumberKey(event)'&gt;

【讨论】:

    【解决方案2】:

    您应该在测试中使用|| 而不是&amp;&amp;
    在我的azerty 键盘上,- 符号字符代码是54,而不是45

    function isNumberKey(evt) {
        var charCode = (evt.which) ? evt.which : event.keyCode
        if (charCode > 31 && (charCode < 48 || charCode > 57 || charCode == 45) )
            return false;
    
        return true;
    }
    

    this fiddle

    编辑

    看起来像您的 charCode is correct54 值来自我的azerty 键盘。
    不过,您应该在支票中使用|| 而不是&amp;&amp;

    【讨论】:

    • 在我的win机器上45-
    • 我正在使用azerty 键盘,也许这是链接的,我的小提琴可以使用它。重点是:使用|| 而不是&amp;&amp;
    • @cl3m 是的,您的条件是正确的,如果情况是跨浏览器,那么我猜String.fromCharCode(event.keyCode) == "-" 匹配会是更好的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多