我需要验证用户输入,其中用户只能输入不等于但大于0且小于规定值的值。如果我提供某些对象,我的验证逻辑将起作用
{required:true, greaterThan: 1, smallerThan: 50}
在这里,如果我输入的值为0,则显示错误消息value should be greater than 1
,但如果出现这种情况,我会改为提供以下对象
{required:true, greaterThan: 0, smallerThan: 50}
我输入值0,那么它不会显示错误消息value should be greater than 0
这是我的验证逻辑
if (fieldValue.smallerThan && value && parseInt(value, 10) > fieldValue.smallerThan) {
set(
errors,
key,
`${fieldValue.label} should be smaller than ${fieldValue.smallerThan}`,
)
}
if (fieldValue.greaterThan && value && parseInt(value, 10) < fieldValue.greaterThan) {
set(
errors,
key,
`${fieldValue.label} should be greator than ${fieldValue.greaterThan}`,
)
}
答案 0 :(得分:0)
0 && any value
由于在JavaScript中将false
视为0
值,因此总是会产生falsy
您可以做的是
fieldValue.greaterThan >= 0 && ..
答案 1 :(得分:0)
如果您只是在检查fieldValue中是否存在大于属性,这似乎就是您正在做的事情,那么您可能还考虑将两个检查编辑为:
如果(fieldValue.smallerThan!==未定义&& ...)
和
如果(fieldValue.greaterThan!==未定义&& ...)
通常,依赖于值的真实性或虚假性会使您陷入麻烦,并且最好明确说明要检查的内容。
答案 2 :(得分:0)
始终将您的输入转换为整数或浮点数。
if(!(fieldValue.smallerThan < parseInt(value))){
...value must be smaller than 50
}
if(!(fieldValue.greaterThan > parseInt(value))){
...value must be greater than 0
}