标签: yup

使用 YUP 验证文件存在

我正在使用Yup来验证我的表单。在我的一种形式中,我想验证<input type="file" />一个文件是否存在。

我已经测试过这个(它不起作用):

Yup.object().shape({
  file: Yup.object().shape({
    name: Yup.string().required()
}).required('File required')
Run Code Online (Sandbox Code Playgroud)

我在控制台中有以下错误消息:

file 必须是一种object类型,但最终值是:(null从值转换{})。如果“null”打算作为空值,请确保将架构标记为.nullable()

任何的想法?

reactjs yup formik

12
推荐指数
4
解决办法
1万
查看次数

用Yup验证电话号码?

我正在尝试用Yup验证电话号码:

phone: Yup.number()
  .typeError("That doesn't look like a phone number")
  .positive("A phone number can't start with a minus")
  .integer("A phone number can't include a decimal point")
  .min(8)
  .required('A phone number is required'),
Run Code Online (Sandbox Code Playgroud)

.min(8)验证该数字是否为8或更多.所以简单输入8就会通过.如何才能使8个字符需要1000 0000才会通过?

javascript yup

12
推荐指数
4
解决办法
1万
查看次数

是的:如何仅在字段存在时验证字段?

是否可以仅在字段存在时验证该字段?

我将创建一个应用程序。字段(电子邮件)可能会/可能不会显示在步骤 2 中,这取决于步骤 1 的选择选项。问题是我不能 put email: Yup.string().Required(),它会导致验证一直运行,即使该字段没有显示。

reactjs yup react-hook-form

12
推荐指数
2
解决办法
3万
查看次数

是的,有两个相关领域的验证

我在 reactjs 中使用 formik 进行表单管理,我有一个关于验证的问题。

我有两个字段,一个是选择国家的选择控件,另一个是邮政编码。

在 country 数组中,我们有正则表达式来验证邮政编码,其想法是使用当前所选国家/地区的正则表达式验证输入的邮政编码,有人可以提供有关如何执行此操作的线索。

yup formik

11
推荐指数
5
解决办法
2万
查看次数

是的,对多个值进行验证

我想在 formik 中使用 yup 验证我的表单。假设我有 4 个字段 A、B、C、D,它们都是字符串。如果我想让至少一个字段不为空,我应该如何编写验证模式,那么这是一个有效的表单?提前致谢!

yup formik

11
推荐指数
5
解决办法
4万
查看次数

是的:对象数组的深度验证

我有一个这样的数据结构:

{
  "subject": "Ah yeah",
  "description": "Jeg siger...",
  "daysOfWeek": [
    {
      "dayOfWeek": "MONDAY",
      "checked": false
    },
    {
      "dayOfWeek": "TUESDAY",
      "checked": false
    },
    {
      "dayOfWeek": "WEDNESDAY",
      "checked": true
    },
    {
      "dayOfWeek": "THURSDAY",
      "checked": false
    },
    {
      "dayOfWeek": "FRIDAY",
      "checked": false
    },
    {
      "dayOfWeek": "SATURDAY",
      "checked": true
    },
    {
      "dayOfWeek": "SUNDAY",
      "checked": true
    }
  ],
  "uuid": "da8f56a2-625f-400d-800d-c975bead0cff",
  "taskSchedules": [],
  "isInitial": false,
  "hasChanged": false
}
Run Code Online (Sandbox Code Playgroud)

daysOfWeek我想确保至少有一个项目有checked: true.

到目前为止,这是我的验证模式(但不起作用):

const taskValidationSchema = Yup.object().shape({
  subject: Yup.string().required('Required'),
  description: Yup.string(),
  daysOfWeek: Yup.array()
    .of( …
Run Code Online (Sandbox Code Playgroud)

yup formik

11
推荐指数
2
解决办法
2万
查看次数

使用 Yup 和 Formik 自动修剪空白

我正在使用在架构上定义的 Formik React Form 和 Yup 验证:

export const Contact = yup.object<IContact>().shape({
  contactName: yup
    .string()
    .trim('The contact name cannot include leading and trailing spaces')
    .strict(true)
    .min(1, 'The contact name needs to be at least 1 char')
    .max(512, 'The contact name cannot exceed 512 char')
    .required('The contact Name is required'),
});
Run Code Online (Sandbox Code Playgroud)

有没有办法让 Yup 修剪空白而不显示消息?那么在提交表单时自动修剪空格?

validation typescript reactjs yup formik

11
推荐指数
1
解决办法
1万
查看次数

如何使用 yup.addMethod() 为国家/地区名称和代码编写自定义架构验证?

我正在尝试yup使用formik. 我的验证似乎有效,但我觉得它太冗长了。

试图使用 的.addMethod()功能yup,但在语法上陷入困境,或者这可能是矫枉过正?

摘要:我想将我的验证转换为使用yup.addMethod().

实际验证:

import * as yup from 'yup'

const countryNameRegex = /[A-Za-z]/g;
const countryCodeRegex = /[a-zA-Z]{2,}/g;
const isRequired = 'Required Field'
const isCorrectFormat = 'The country name may contain only letters'

const countryValidationSchema = yup.object().shape({
  name: yup.string()
    .min(3, `country name must contain at least 3 characters`)
    .matches(
      countryNameRegex,
      {
        message: isCorrectFormat,
        excludeEmptyStrings: true
      }
    )
    .label(`Country Name`)
    .required(isRequired),
  code: yup.string()
    .length(2, `The country code must be …
Run Code Online (Sandbox Code Playgroud)

validation schema reactjs yup formik

11
推荐指数
1
解决办法
8874
查看次数

如何让 yup 数字接受可为空的值?

我有以下是检查:

nrOfApples: yup.number().min(0).max(999),
Run Code Online (Sandbox Code Playgroud)

现在,如果我将该字段留空,它将验证为 false。有没有办法让 yup.number() 接受空值?我试过了:

yup.number().nullable()
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用。关于如何让这种事情发生的任何想法?

javascript yup

11
推荐指数
1
解决办法
8876
查看次数

如何自定义 yup 验证消息?

我见过的大多数答案在定义模式时都会自定义 yup 验证消息,例如

const personSchema = yup.object().shape({
    firstName: yup.string().required('First name is a required field'),
    lastName: yup.string().required('Last name is a required field'),
});
Run Code Online (Sandbox Code Playgroud)

但是如果我想自定义默认验证消息本身怎么办?例如,必填字段应始终呈现固定字符串“必填字段”。

yup

11
推荐指数
1
解决办法
2万
查看次数