首页 > 解决方案 > 如何在 React 中检测小数作为数字

问题描述

我有这个函数用来检测值是否为整数。现在,当我输入十进制数字时,我在为数字设置的验证中抛出了一个错误。我将如何输入5.79之类的值。它仅适用于整数

这是检查整数的函数

      static isInt(value: any) {
        var x: any;

       return typeof value =="number";
    }

我使用此验证来检查输入值是否为数字

static checkNumber(value: number, minNumber: number, maxNumber: number): IValdationResuslt {
        if (value >= minNumber) {
            if (value <= maxNumber) {
                return { state: true, message: `Valid` } as Valid;
            }
            return { state: false, message: `Max Characters ${maxNumber} : Entered ${value}` } as IValdationResuslt;
        }
        return { state: false, message: `Min Number ${minNumber} : Entered ${value}` } as Invalid;
    }

这是数字的输入验证检查

static inputValidation(value: any, state: any) {
  switch (state.type) {
    case "number":
      //check if the value is a valid number
      if (this.isInt(value)) {
        //check if the minNumber value hase been exceeded
        return this.checkNumber(value, state.minNumber, state.maxNumber);
      }
      return {
        state: false,
        message: "The value entered is not a number"
      }
      as IValdationResuslt;
    case "telephone":
      //check if the max length value has been exceeded
      if (this.isInt(value)) {
        //check if the minNumber value hase been exceeded
        return this.checkNumber(value, state.minNumber, state.maxNumber);
      }
  }
}

标签: javascriptreactjs

解决方案


您可以Number.isFinite()用来评估输入是否为数字

const isNumber = (number) => Number.isFinite(number);

let num = 4;
console.log(`${num} is a number: ${isNumber(num)}`);
num = 4.54;
console.log(`${num} is a number: ${isNumber(num)}`);
num = 'a';
console.log(`${num} is a number: ${isNumber(num)}`);

// 4 is a number: true
// 4.54 is a number: true
// a is a number: false


推荐阅读