javascript - 密码确认和密码相等,但验证仍然触发 React 组件中的 JOI
问题描述
我创建了一个注册表单,并且在尝试验证密码确认时出现了问题。我正在使用最新版本的 JOI-Browser。
我尝试了下面的代码,即使密码和密码确认具有相同的值,也触发了验证错误。
password: Joi.string()
.min(5)
.required(),
passwordConfirmation: Joi.ref("password")
这是我的状态对象:
password: "12345"
passwordConfirmation: "12345"
username: ""
errors: {…}
passwordConfirmation: "\"passwordConfirmation\" must be one of [ref:password]"
我花了几个小时尝试了几种方法并阅读了文档,但仍然没有运气,验证仍在触发,
我在这种形式中有其他验证,它们工作正常。
解决方案
我认为不Joi.ref
应该那样使用。
我通常倾向于这样做:
const passwordConfirmation = Joi.string()
.required()
.valid(Joi.ref('password'))
.options({
language: {
any: {
allowOnly: '!!Passwords do not match',
}
}
})
如果您参考文档,您将看到:
请注意,只能在明确支持的情况下使用引用,例如在 valid() 或 invalid() 规则中。如果需要向上(父)引用,请使用 object.assert()。
推荐阅读
- excel - 使用 VBA 对数据透视表中的列进行排序时,如何在对象 PivotLines() 中插入变量?
- python - 尝试将对象转换为数字时出现问题
- c++ - 格式指定类型'char *',但参数的类型为'std::string *'(又名'basic_string
*') - html - 从以前的网页而不是重定向的网页 VBA 填充的 HTML 元素集合
- javascript - 节点js写入文件
- android - 如何在 Gradle 中删除任务名称中的斜杠
- java - 第二个 Jframe 不会显示
- wordpress - MAMP localhost 归档导致一无所获
- javascript - Socket.io 不会在我的 React 应用程序中的浏览器后退按钮上触发断开连接
- python - 如何在实际表单验证中取外键字段,DJANGO