数字输入设置货币格式:让输入框自动显示¥和千分位
数字输入设置货币格式,说白了就是让一个纯数字的input框在用户敲字时自动呈现"¥1,234.56"这种视觉效果。做过财务系统的都知道,需求方从来不想让你存个裸数字然后让他们自己拼符号。
最常见的落地方式是用正则校验配合oninput事件做实时格式化。用户每多敲一个字符,JS就把整数部分每三位插逗号数字输入设置货币格式:让输入框自动显示¥和千分位,前面拼上币种符号。关键原则是只显示层做格式化,实际存储和提交接口时传的还是纯数字"1234.56",别把逗号混进数据库。

如果用Vue或React,直接封一个CurrencyInput组件,内部维护rawValue,对外吐formatted。格式转换那一步交给Intl.NumberFormat,传入locale和currency两个参数,一行代码就搞定多币种和不同地区的千分位规则,不用自己写正则。
后端收数据时别信前端传过来的格式化字符串,强制转decimal。数据库里用DECIMAL(18,2) 存,展示层再做格式还原。涉及多币种的话额外加currency_code字段,汇率绝不要硬编码在展示逻辑里。
最容易翻车的是粘贴事件。用户从Excel复制进来的是"1,234.56",带逗号带空格数字输入设置货币格式,不拦不清洗校验直接崩。移动端数字键盘没有小数点键,记得把inputmode设为"decimal",不然用户对着手机框半天输不出小数。
