react, react native 限制只能输入数字,且保留小数后两位

react或react native表单输入的时候要输入价格,这个价格输入要做一定限制,需要满足一下情况:

  • 必须为数字
  • 只能有一个小数点
  • 小数点后保留两位小数
  • 当第一位输入小数点的时候自动补全,补为 0.
  • 除非是小数,否则数字不能以0开头

通过上面的限制最终得到结果如下:

import React from 'react'
import { render } from 'react-dom'

export default class NameForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = { value: '' };
  }

  handleChange = (event) => {
    // 过滤只能输入小数点和数字
    let val = event.target.value.toString().replace(/[^\d^\.?]+/g, "").replace(/^0+(\d)/, "$1").replace(/^\./, "0.").match(/^\d*(\.?\d{0,2})/g)[0] || ""
    this.setState({ value: val });
  }

  render() {
    return (
      <form>
        <label>
          价格:
          <input type="text" value={this.state.value} onChange={this.handleChange} />
        </label>
        <input type="submit" value="提交" />
      </form>
    );
  }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容