当我在数字键盘上输入小数点时,输入字段值消失

问题描述 投票:0回答:1

我使用 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

的问题

有解决办法吗?

html forms input formik
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.