是的验证验证 formki 字段是否以其他输入字段的值开始
yup validation to Validate formki field whether starts with value of other input field
我的表单中有 2 个字段,比如 carriercode 和 billnum,这里我需要验证号码应该始终具有 carriercode 的值作为前缀,例如,如果 carriercode=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 中使用类似 startsWith/indexOf 的功能。
test
方法可以是其中之一。在 test
方法中,您可以使用 this.parent['carriercode']
访问其他字段(此处 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;
}
})
})
我的表单中有 2 个字段,比如 carriercode 和 billnum,这里我需要验证号码应该始终具有 carriercode 的值作为前缀,例如,如果 carriercode=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 中使用类似 startsWith/indexOf 的功能。
test
方法可以是其中之一。在 test
方法中,您可以使用 this.parent['carriercode']
访问其他字段(此处 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;
}
})
})