javascript - Joi 验证 2 个输入字段中至少有一个已完成

标签 javascript reactjs validation joi

当谈到 joi 的 .or() 函数时,我似乎遇到了障碍,因为它似乎没有像我预期的那样实现。

我有 2 个文本输入字段,它们都有自己的验证方式,但至少只需要一个。

    const schema = joi
      .object({
        "either-this-field": joi.string().trim().max(26),
        "or-this-field": joi
          .string()
          .trim()
          .regex(/^\d+$/)
          .max(26)
        "other-field-1": joi.string().required(),
        "other-field-2": joi.string().max(40).required(),
    
      })
      .or("either-this-field", "or-this-field");

这 or 似乎没有像我期望的那样做,并且 or 中的每个字段都按照它自己的验证规则进行了验证

如果两个字段都没有值,那么我将显示两个字段的错误,直到至少有一个完成

最佳答案

From here

var schema = Joi.alternatives().try(
  Joi.object().keys({
    a: Joi.string().allow(''),
    b: Joi.string()
    }),
  Joi.object().keys({
    a: Joi.string(),
    b: Joi.string().allow('')
    })
);

alternatives().try() 添加了一个替代模式类型,用于尝试匹配已验证的值。您正在传递两个选项,它会选择其中一个。

关于javascript - Joi 验证 2 个输入字段中至少有一个已完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74236584/

相关文章:

javascript - 我的模态组件位于不同的文件中,我正在尝试从另一个组件打开它

reactjs - 通过 Azure CLI 基于 Azure DevOps git 存储库部署 ReactJs Azure 静态 Web 应用程序

javascript - 如何使用映射函数无限迭代数组?

javascript - babel-loader 语法错误仅适用于导入的模块

asp.net - 如何在 ASP.NET MVC 中扩展 ValidationSummary HTML Helper?

javascript - verify.js 库未验证

c++ - vector C++ 的输入验证

javascript - 连续改变一个类(class)的背景颜色

javascript - 使用 JQuery 验证的最大日期

javascript - knockout - foreach : Change button color on click