React Formik Yup 验证用于检查小于数字的输入值
React Formik Yup validation for checking input value less than a number
我有一个使用 Formik 构建的表单。表单中有两个单选按钮,当单击一个单选按钮时,将出现一个输入字段。我需要使用 Yup 验证来验证该输入字段。该值应小于 9999.99,它也可以接受整数和小数值。我试过的代码如下:
Form.js
<RadioGroup
name="callBackSelectionType"
initialValues={[
{
value: CALLBACKREQUIRED,
label: "Lower callback limit",
},
{
value: REMOVECALLBACK,
label: "Reset to default ,000",
},
]}
/>
{values["callBackSelectionType"] === CALLBACKREQUIRED && (
<div className="fields-container">
<InputField
label={CALLBACK_LIMIT}
name="greaterThan"
placeholder="[=10=].00 to ,999.99"
errorMessage={getRequiredMessage(CALLBACK_LIMIT)}
/>
</div>
)}
Schema.js
const schema = yup.object().shape({
callBackSelectionType: yup.string().required(),
greaterThan: yup.string().when("callBackSelectionType", (val, schema) => {
if (val === "CALLBACKREQUIRED") {
return yup
.number()
.label(Labels.CALLBACKLIMIT)
.lessThan(9999.99, "Limit should be less than 9999.99")
.required(Messages.REQUIRED_FIELD);
}
else return yup.string().notRequired();
}),
});
此验证适用于必填字段,但不适用于应接受十进制且应小于 9999.99 的条件。请帮忙.
提前致谢
你可以尝试使用 .max(9999.99, "Commission should not be more than 2 digits")
吗?
我有一个使用 Formik 构建的表单。表单中有两个单选按钮,当单击一个单选按钮时,将出现一个输入字段。我需要使用 Yup 验证来验证该输入字段。该值应小于 9999.99,它也可以接受整数和小数值。我试过的代码如下:
Form.js
<RadioGroup
name="callBackSelectionType"
initialValues={[
{
value: CALLBACKREQUIRED,
label: "Lower callback limit",
},
{
value: REMOVECALLBACK,
label: "Reset to default ,000",
},
]}
/>
{values["callBackSelectionType"] === CALLBACKREQUIRED && (
<div className="fields-container">
<InputField
label={CALLBACK_LIMIT}
name="greaterThan"
placeholder="[=10=].00 to ,999.99"
errorMessage={getRequiredMessage(CALLBACK_LIMIT)}
/>
</div>
)}
Schema.js
const schema = yup.object().shape({
callBackSelectionType: yup.string().required(),
greaterThan: yup.string().when("callBackSelectionType", (val, schema) => {
if (val === "CALLBACKREQUIRED") {
return yup
.number()
.label(Labels.CALLBACKLIMIT)
.lessThan(9999.99, "Limit should be less than 9999.99")
.required(Messages.REQUIRED_FIELD);
}
else return yup.string().notRequired();
}),
});
此验证适用于必填字段,但不适用于应接受十进制且应小于 9999.99 的条件。请帮忙.
提前致谢
你可以尝试使用 .max(9999.99, "Commission should not be more than 2 digits")
吗?