为了账号安全,请及时绑定邮箱和手机立即绑定

yup 验证来验证表单字段是否以其他输入字段的值开头

yup 验证来验证表单字段是否以其他输入字段的值开头

慕桂英4014372 2023-08-18 16:41:30
我的表单中有 2 个字段,即载体代码和帐单号码,这里我需要验证号码应始终以载体代码的值作为前缀,例如,如果载体代码=ABCD blnum 应该是 ABCD,后跟任何包机可以是字符串或数字。return Yup.object({    carriercode: Yup.string().required(requiredMessage).min(4,"length should be 4").matches(/^[a-zA-Z0-9-]+$/,"Can not contain special characters like ),(,@ etc."),    blnum: Yup.string().required(requiredMessage) //validate if blnum starts with carriercode       })}有没有什么方法可以使用 yup 验证来实现这一点,简单来说,我需要 yup.txt 中的startsWith/indexOf 功能之类的东西。
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

该test方法可以是其中之一。在方法内部,您可以使用test访问其他字段(此处) 。只需制作一个像这样的自定义验证器:carriercodethis.parent['carriercode']


Yup.object({

    carriercode: Yup.string().required(requiredMessage).min(4, "length should be 4").matches(/^[a-zA-Z0-9-]+$/, "Can not contain special characters like ),(,@ etc."),

    blnum: Yup.string()

        .required("Should be the prefix of carriercode") //validate if blnum starts with carriercode

        .test("Check prefix", function () {

            let carriercode = this.parent["carriercode"];

            let blnum = this.parent["blnum"];

            // console.log(carriercode, blnum);

            if (carriercode && blnum) {

                return blnum.startsWith(carriercode) ? true : false;

            }

        })

})


查看完整回答
反对 回复 2023-08-18
  • 1 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信