javascript 向数字验证添加两个错误

ijnw1ujt  于 2023-09-29  发布在  Java
关注(0)|答案(2)|浏览(111)

我正在使用input type=number和验证它。
我想做的是:

  • 如果值不是数字-显示错误only numbers allowed
  • 如果输入为空-显示错误value is required

yup.object().shape({ fieldName: yup.number().typeError("only numbers allowed").required("value required").min(0) })
但它总是只返回typerror

njthzxwz

njthzxwz1#

您正在尝试验证输入字段或type = number,如果传递空字符串,则会产生错误。Yup验证是主动检查值是否是有效的JavaScript数字,空值或非数字字符串不符合此标准。
1.使用yup.mixed()允许数字和空值
1.使用测试方法定义自定义验证规则
下面是修改后的代码:

import * as yup from 'yup';

const schema = yup.object().shape({
  fieldName: yup
    .mixed() // Use mixed() to allow both numbers and empty values
    .test('is-number-or-empty', 'Only numbers allowed or value is required', (value) => {
      // Check if the value is a number or empty
      if (!value || !isNaN(value)) {
        return true; // Validation passed
      } else {
        return false; // Validation failed
      }
    })
    .typeError('Only numbers allowed'), // Type error message
});
lkaoscv7

lkaoscv72#

function validateNumber(input) {
  if (input === "") {
    return "Error: Input cannot be empty.";
  }

  if (!/^\d+$/.test(input)) {
    return "Error: Input must contain only numeric characters.";
  }

  return "Success: Input is a valid number.";
}

// Example usage:
const userInput = prompt("Enter a number:");
const validationResult = validateNumber(userInput);

console.log(validationResult);

相关问题