我使用 Formik 的数字输入字段 其编码如下:
<Form.Control
value={formikProps.values.amount}
onChange={(evt: any) => {
formikProps.setFieldValue(
`formInvoice.amount`,
parseFloat(evt.target.value)
);
}
}
type="number"
step=".01"
name="amount"
/>
当我使用数字键盘上的点输入十进制值时,我的值将从字段中消失。
而如果我使用逗号则没有问题。
我想这一定是
parseFloat
的问题
有解决办法吗?
JavaScript 的 parseFloat 函数不将逗号 (,) 处理为数字字符串中的有效字符。在 JavaScript 中,逗号不被视为数字格式的一部分,而是用作千位分隔符。
要解析以逗号作为千位分隔符的字符串并获取有效数字,您需要在使用 parseFloat 之前从字符串中删除逗号。你可以做这样的事情:
let stringWithCommas = '29,332.34';
let stringWithoutCommas = stringWithCommas.replace(/,/g, ''); // Remove commas
let parsedNumber = parseFloat(stringWithoutCommas); // Parse the number
console.log(parsedNumber); // This will output 29332.34