2021-07-08

1 篇文章 0 订阅
1 篇文章 0 订阅

antd如何限制InputNumber只能输入小数和整数

需求背景:需要实现在input框中只能输入整数和小数的功能,如果按键盘上的其他键是无法输入的
思路:首先你要了解antd中InputNumber的formatter、parser这两个API
话不多说上代码!!!

import type { FC } from "react";
import React, { Fragment } from "react";
import { Row, Col, InputNumber } from "antd";
import styles from "../../index.less";

const Demo: FC = () => {
  const decimalCheck = (value: string | number): string => {
    const reg = /^(-)*(\d+)\.(\d\d).*$/; // 小数和整数的正则
    if (typeof value === "string") { // 判断传入的value是不是字符串
      // eslint-disable-next-line no-restricted-globals
      return !isNaN(Number(value)) ? value.replace(reg, "$1$2.$3") : "";
    }
    if (typeof value === "number") { // 判断传入的value是不是数字
      // eslint-disable-next-line no-restricted-globals
      return !isNaN(value) ? String(value).replace(reg, "$1$2.$3") : "";
    }
    return ""; // 如果都不是return空,做一个兜底处理
  };
  return (
    <Fragment>
      <Row>
        <Col span={12} className={styles.commonTitileRight}>
          <InputNumber
            className={styles.InputNumber}
            defaultValue={1}
            // @ts-ignore
            min={0}
            max={1}
            step={0.01}
            // @ts-ignore
            formatter={decimalCheck}
            // @ts-ignore
            parser={decimalCheck}
          />
        </Col>
      </Row>
    </Fragment>
  );
};
export default Demo;

在formatter、parser中使用decimalCheck方法即可实现,效果如下图
在这里插入图片描述

如果觉得有用记得一键三连喔~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值