期间被识别为ASCII码190?

时间:2016-03-25 21:50:28

标签: javascript

在.cshtml网页中使用javascript开发一个网络应用程序,我正在使用一个函数来检查用户输入,以确保它在输入文本框之前的数字或句点/小数点。

原始代码(在这里找到!:):

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

    return true;
}

我添加了alert(charCode);在if之前,弹出的是190. ASCII 190是YEN符号。

我编辑了代码以接受ASCII 190,我的句号/小数点现在出现了。

我是编程/网络开发的新手。为什么我遇到了我的问题?有修复吗?

-TC

2 个答案:

答案 0 :(得分:2)

可视化和键码的字符之间存在差异。

大多数密钥代码都映射到您从ASCII表中知道的char值。

但是例如点在键盘上有多个位置。 小键盘上的点与文本空间中的点的值不同。

这对我来说非常有帮助,可以在过去https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode了解这一点。

答案 1 :(得分:0)

一旦我得知密钥和ASCII不一样,我发现:Keycode是键盘位置,ASCII是字节表表示。但它甚至更深。的onkeydown =&#34; isNumberKey()&#34;返回键码,onKeyPress =&#34; isNumberKey()&#34;返回ASCII,..至少在Chrome和IE中包含win和win包含的Edge。