为什么javascript功能不起作用?

时间:2016-03-17 07:54:55

标签: javascript jquery asp.net javascript-events

我正在使用此功能仅在文本框中输入数字并且它有效。

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;
}

现在它不起作用,它也允许字母,为什么?

2 个答案:

答案 0 :(得分:2)

小组中需要||

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

  return !bool;

}
<input type="text" onkeypress='return isNumberKey(event)'>

答案 1 :(得分:1)

您应该在测试中使用||代替&& 在我的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键盘 不过,您应该在支票中使用||代替&&