antd input 输入内容限制,只能输入数字,包括负数,带两位小数点

效果可以参考港股选股器_香港股票筛选查询工具 - 富途牛牛

               <Input
                suffix="%"
                className={styles['wmx-select-token__input']}
                placeholder="0.00"
                value={minValue1}
                onChange={minChange1}
                // onKeyUp={minChange1}
                onBlur={clearNoNum1}
              />
  const [minValue1, setMinValue1] = useState('');

  const minChange1 = (e: any) => {
    setMinValue1(e.target.value);
  };

  const clearNoNum1 = (e: any) => {
    const checkPlan = clearNoNum(e.target.value);
    setMinValue1(checkPlan);
  };

  const clearNoNum = (e: any) => {
    let checkPlan = '' + e;

    const t = checkPlan.charAt(0); //得到第一个字符是否为负号

    checkPlan = checkPlan
      .replace(/[^\d.]/g, '') // 清除“数字”和“.”以外的字符
      .replace(/\.{2,}/g, '.') // 只保留第一个. 清除多余的
      .replace(/^\./g, '') // 保证第一个为数字而不是.
      .replace('.', '$#$')
      .replace(/\./g, '')
      .replace('$#$', '.');
    if (checkPlan.indexOf('.') < 0 && checkPlan !== '') {
      // 以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
      checkPlan = parseFloat(checkPlan) + '';
    } else if (checkPlan.indexOf('.') >= 0) {
      checkPlan = checkPlan.replace(/^(-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); // 只能输入两个小数
    }

    if (Number(checkPlan) > 999999.99) {
      checkPlan = '999999.99';
    }

    //如果第一位是负号,则允许添加
    if (t == '-') {
      checkPlan = '-' + checkPlan;
    }

    return checkPlan;
  };

这样就实现了 antd input输入框限制数字,包括负数,且保留两位小数的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值