多个'何时'关于Joi验证的条件

时间:2017-12-12 02:17:31

标签: javascript validation joi

上下文
  • 节点版本:6.11.3
  • joi version :10.0.6
  • environment (节点,浏览器):浏览器
  • (hapi,standalone,...)一起使用:standalone
  • 任何其他相关信息:如果我一次评论一个条件,则两者都可以独立完成。

我想要实现的目标

我有一个单选按钮组,需要 两部分验证架构 ,并根据彼此的值有条件地要求这两个部分。如果用户选择了最后一个选项'其他',则会显示一个输入字段,供他们手动输入另一个数字

如果未选择第四个选项,第一个验证应该要求选择前三个

第二个验证应该是,如果选择值是'其他',则忽略输入掩码并要求输入填充10位数的电话号码。

screen shot 2017-12-11 at 8 58 19 pm

const cardContactSchema = {
  selectedCardNumber: Joi.string()
    .label('Phone Number')
    .when('otherPreferredCardNumber', {
      is: Joi.string().empty(''),
      then: Joi.string().required(),
    }),
  otherPreferredCardNumber: Joi.string()
    .label('Phone Number')
    .when('selectedCardNumber', {
      is: 'other',
      then: Joi.string()
        .replace(/\D/g, '')
        .length(10)
        .required()
        .options({
          language: {
            string: {
              length: 'length must be {{limit}} digits',
            },
          },
        }),
      otherwise: Joi.string().optional(),
    }),
};

当前结果:

Error: item added into group otherPreferredCardNumber created a dependencies error(otherPreferredCardNumber)

我的期望: 第一个验证应该是,如果未选择第四个选项,则需要选择前三个

第二个验证应该是,如果选择值是'其他',则忽略输入掩码并要求输入填充10位数的电话号码。

0 个答案:

没有答案