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

我的表单中有 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 功能之类的东西。


慕桂英4014372
浏览 74回答 1
1回答

神不在的星期二

该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;            }        })})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript