isNaN 在 Firefox 中不起作用

Bob*_*ett -1 javascript firefox numerical nan

我有一个文本框设置如下:

<input type="text" name="CardNumber" id="CardNumber" maxlength="7" onkeypress="if(isNaN(this.value+String.fromCharCode(event.keyCode))) return false;" onblur="ValidateCardNumber()"/>
Run Code Online (Sandbox Code Playgroud)

(注意:ValidateCardNumber() 是一个单独的函数,用于检查长度等内容,但它不是将字段限制为数值的一部分)。

这在 IE 中工作得很好。它将允许我输入数字,但忽略非数字按键。

在 Firefox 中,我无法在该文本框中输入任何内容。

有什么想法吗?

我愿意以不同的方式坚持到底。

谢谢。

epa*_*llo 5

调试会告诉你问题所在

console.log(this.value+String.fromCharCode(event.keyCode));
Run Code Online (Sandbox Code Playgroud)

查看控制台你会看到

在此输入图像描述

现在看看它返回了什么

console.log(this.value, event.keyCode);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

所以关键代码总是返回零。

你需要做的是使用event.whichfirefox

console.log(this.value+String.fromCharCode(event.which || event.keyCode));
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述