React 实现添加千分位的 Input
有这样一个需求,用户在 input 中输入金额,为了展示效果,需要:
- 用户输入时,自动添加千分位
- 输入结束,提交时仍提交数字(不包含千分位)
因为最近正在学习 React.js,就试着练练手,用 React 实现满足上述需求的 input 组件。
千分位
维基百科 对千分位有清楚的说明,这里只举一个例子。
123456.9876
的千分位是
123,456.987,6
另外千分位可以用逗号,也可以用空格。这里就不做区分,都只用逗号表示。
对数字添加千分位的 js 实现也有 很多,这里就选最简单的一种。
添加千分位:
1 | var amount = '123456.9876'; |
去除千分位:
1 | var amountThusandth = '123,456.987,6'; |
不过需要提醒一下,不要使用 toLocaleString(),toLocaleString 函数无法对小数部分添加千分位,并且在不同浏览器的效果不同。
实现
React.js 对我来说,是一种全新的思考套路,如果不熟悉 React 的话,非常建议先阅读下面这两篇文章:
对输入的数字添加千分位这个问题,实际上是一个很典型的问题:
- 用一个 state 来保存添加千分位的结果
- input 的 value 由 state 设置
- 在 input 的 onChange 中,处理用户输入的值,并通过 this.setState 更新
Demo
参考
小數點 - 维基百科
从千分位格式化谈 JS 性能优化
React.js 的介绍 - 针对了解 jQuery 的工程师
React 编程思想