我正在使用Firefox。如果将ParseFloat()或Number()应用于字符串或数字,然后将值更新为输入表单,则显示的数字的格式为逗号而不是点。但是出于神秘的原因,当使用3位小数时,它不起作用。
E.g。
1.1 --> 1,1
1.23 --> 1,23
1.3456 --> 1,3456
BUT
1.234 --> 1.234
这真的很奇怪..
<input type="number" onKeyPress="if (event.keyCode == 13) { DotToComma(this); }"></input>
function DotToComma(that) {
if (that.value.indexOf(".") >= 0) {
var str = that.value;
that.value = Number(str);
}
}
你知道为什么吗?
我正在开发一个WebAPP,只有当我用逗号而不是点输入数字时,我的代码才有效。
答案 0 :(得分:0)
看起来Javascript正试图将字符串解析回浮点而不是字符串。
只需添加toString()
功能即可确保转换。您也可以使用String()
对象进行转换。
function DotToComma(that) {
if (that.value.indexOf(".") >= 0) {
var str = that.value.toString();
that.value = Number(str);
}
}
您也可以像这样简化代码:
that.value = parseFloat(that.value.toString().replace(/./, ','));
答案 1 :(得分:0)
实际上你的功能不是问题,真正的问题是你试图在输入数字值中加一个无效的数字,这个值应该是这个模式000.000
之后的有效数字而你不能使用逗号,你只能使用一个点,只能使用一个点。
W3C标准规定必须是 Floating-point number 。
检查以下示例,其中我对输入编号和输入文本使用相同的函数:
function DotToComma(that) {
if (that.value.indexOf(".") >= 0) {
var str = that.value.replace('.', ',');
console.log(str);
that.value = str;
}
}
<input type="number" onKeyUp="if (event.keyCode == 13) { DotToComma(this); }"></input>
<br> an input text:
<input type="text" onKeyUp="if (event.keyCode == 13) { DotToComma(this); }"></input>
您可以注意到普通文本输入将接受逗号,但不接受输入数字。