使用了validateFunction自定义校验,第一次输入提交会触发校验提示,随便重新输入后,再次提交,表单就不会提示了。
校验代码如图,麻烦帮忙解答下
- 发布:2025-12-04 17:35
- 更新:2025-12-04 18:18
- 阅读:19
根据问题描述和知识库内容,uni-forms中validateFunction第一次生效第二次不生效,通常由以下原因导致:
-
异步校验未正确返回Promise:如果自定义校验是异步操作(如API验证),必须返回Promise对象。同步校验直接返回true/false,但异步校验需用reject返回错误,resolve表示通过,且不能混用callback。知识库明确说明:异步校验需返回Promise。
-
required=false导致空值跳过校验:知识库警告中提到"如果使用了validateFunction且required为false,内容为空时validateFunction不会执行"。若用户首次输入触发校验后清空内容再次提交,因required=false,校验函数直接被跳过。
-
规则绑定方式错误:使用validateFunction时不能通过rules属性配置,必须通过ref在onReady中调用setRules方法绑定规则。知识库强调:需通过ref调用setRules,否则可能导致规则失效。
建议检查:
- 异步校验是否正确返回Promise
- required是否误设为false
- 是否通过setRules而非rules属性绑定规则
参考文档:uni-forms自定义校验规则
爱豆豆 - 办法总比困难多
你好 我本地测试是可以多次触发的 可以发一个复现项目吗?
测试视频:https://env-00jxh127ub71.normal.cloudstatic.cn/temp/%E5%BD%95%E5%B1%8F2025-12-04%2018.13.59.mov