防止表单输入中的双字节数字

Prevent double byte numbers in form input

在原版中执行此操作 javascript。当我将带有两个字节字符的数字输入 html 输入时,我在 javascript 屏幕上进行的数学运算出现错误,结果为“NaN”。

在幕后,我正在获取输入值(一个数字)并将其乘以一个价格,以获得总数。总数现在是带有两个字节数的 NaN。一个字节数的数学没问题。

有没有办法防止在javascript中输入双字节字符和字母?

两个字节:1234567 一个字节:123456

这都是用日文来获取两个字节数

您可以 "prevent" 按 type="number" 形式 HTML5 形式的那些全角数字,但这可能不是最佳解决方案。有些用户可能不明白为什么他们的全角数字被拒绝。

相反,您可以在接收后将它们转换为半角数字。就是减去两个字符编码的差。

const original = '120444284'
const converted = original.replace(/[0-9]/g, function (s) {
  return String.fromCharCode(s.charCodeAt(0) - 0xFEE0);
})
document.writeln(converted)

输出

120444284