Late validation on linked field
I am facing an strange issue in my Form using zod and refine a schemaa.
1. I have this schema
that is defined in an function called
any i have two fields, Price and TriggerPrice i want everytime the price input changes to trigger validations on triggerPrice,
so i did this using linked fields
1. I have this schema
z
.number({
required_error: t('widgets.orderExecution.errors.triggerPriceRequired', {
defaultValue: 'Trigger price is required',
}),
invalid_type_error: t(
'widgets.orderExecution.errors.triggerPriceInvalid',
{
defaultValue: 'Please enter a valid trigger price',
}
),
})
.positive({
message: t('widgets.orderExecution.errors.triggerPriceMin0', {
defaultValue: 'Trigger price must be greater than 0',
}),
})
.min(price, {
message: t('widgets.orderExecution.errors.triggerPriceMin', {
defaultValue: 'Trigger price must be greater than current price',
}),
})
.refine(
(val: number) => {
const strValue = val.toString();
const decimalParts = strValue.split('.');
if (decimalParts.length === 2) {
return is3decimalPrice
? decimalParts[1].length <= 3
: decimalParts[1].length <= 2;
}
return true;
},
{
message: t('widgets.orderExecution.errors.triggerPriceDecimalPlaces', {
decimalPlaces: is3decimalPrice ? 3 : 2,
defaultValue: `Trigger price can have maximum ${is3decimalPrice ? 3 : 2} decimal places`,
}),
}
); z
.number({
required_error: t('widgets.orderExecution.errors.triggerPriceRequired', {
defaultValue: 'Trigger price is required',
}),
invalid_type_error: t(
'widgets.orderExecution.errors.triggerPriceInvalid',
{
defaultValue: 'Please enter a valid trigger price',
}
),
})
.positive({
message: t('widgets.orderExecution.errors.triggerPriceMin0', {
defaultValue: 'Trigger price must be greater than 0',
}),
})
.min(price, {
message: t('widgets.orderExecution.errors.triggerPriceMin', {
defaultValue: 'Trigger price must be greater than current price',
}),
})
.refine(
(val: number) => {
const strValue = val.toString();
const decimalParts = strValue.split('.');
if (decimalParts.length === 2) {
return is3decimalPrice
? decimalParts[1].length <= 3
: decimalParts[1].length <= 2;
}
return true;
},
{
message: t('widgets.orderExecution.errors.triggerPriceDecimalPlaces', {
decimalPlaces: is3decimalPrice ? 3 : 2,
defaultValue: `Trigger price can have maximum ${is3decimalPrice ? 3 : 2} decimal places`,
}),
}
);that is defined in an function called
takeProfitTriggerPriceShcematakeProfitTriggerPriceShcema that retunrs zod schemaany i have two fields, Price and TriggerPrice i want everytime the price input changes to trigger validations on triggerPrice,
so i did this using linked fields