首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中同时输入小数和带千个分隔符的自动格式化?

如何在javascript中同时输入小数和带千个分隔符的自动格式化?
EN

Stack Overflow用户
提问于 2021-10-21 23:42:02
回答 1查看 65关注 0票数 2

我目前正在尝试输入,将接受十进制数,并将自动格式与千个分隔符在同一时间。

但是,我唯一能做的自动格式化千位分隔符是设置input type='text',我不能输入小数。Where as setting type=' number‘允许我输入十进制数,但它不会使用千位分隔符自动格式化

代码如下:

代码语言:javascript
复制
<input
  className="cal__section__form__container--input"
  placeholder={0}
  type="text"
  value={displayVal || ""}
  onChange={(e) => {
    const targ = e.target.value.replace(/\D/g, "") || 0;
    const displayVal = parseFloat(targ).toLocaleString(undefined, {
       maximumFractionDigits: 2,
      });
      console.log(displayVal);
      
   }}

/>

EN

回答 1

Stack Overflow用户

发布于 2021-10-21 23:55:12

你永远不会更新你的displayVal状态。在onChange之外处理事件逻辑也是一种很好的做法。下面是你的代码应该是什么样子:

代码语言:javascript
复制
const handleChange = (e) => {
    const value = e.target.value;
    const clean = value.replace(/,/g, "");
    const regex = /^[0-9]*\.?[0-9]*$/;

    if (value && clean.match(regex)) {
      if (!value.includes(".")) {
        const formatted = new Intl.NumberFormat().format(parseFloat(clean));
        setDisplayVal(formatted);
      } else {
        setDisplayVal(value);
      }
    } else {
      setDisplayVal("");
    }
};

<input
    className="cal__section__form__container--input"
    placeholder={0}
    type="text"
    value={displayVal}
    onChange={handleChange}
/>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69669907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档