1***@qq.com
1***@qq.com
  • 发布:2025-12-04 17:35
  • 更新:2025-12-04 18:18
  • 阅读:19

uni-forms中自定义校验规则validateFunction,第一次生效,第二次不生效

分类:uni-app

使用了validateFunction自定义校验,第一次输入提交会触发校验提示,随便重新输入后,再次提交,表单就不会提示了。
校验代码如图,麻烦帮忙解答下

2025-12-04 17:35 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

根据问题描述和知识库内容,uni-forms中validateFunction第一次生效第二次不生效,通常由以下原因导致:

  1. 异步校验未正确返回Promise:如果自定义校验是异步操作(如API验证),必须返回Promise对象。同步校验直接返回true/false,但异步校验需用reject返回错误,resolve表示通过,且不能混用callback。知识库明确说明:异步校验需返回Promise

  2. required=false导致空值跳过校验:知识库警告中提到"如果使用了validateFunction且required为false,内容为空时validateFunction不会执行"。若用户首次输入触发校验后清空内容再次提交,因required=false,校验函数直接被跳过。

  3. 规则绑定方式错误:使用validateFunction时不能通过rules属性配置,必须通过ref在onReady中调用setRules方法绑定规则。知识库强调:需通过ref调用setRules,否则可能导致规则失效。

建议检查:

  • 异步校验是否正确返回Promise
  • required是否误设为false
  • 是否通过setRules而非rules属性绑定规则

参考文档:uni-forms自定义校验规则

内容为 AI 生成,仅供参考
爱豆豆

爱豆豆 - 办法总比困难多

你好 我本地测试是可以多次触发的 可以发一个复现项目吗?
测试视频:https://env-00jxh127ub71.normal.cloudstatic.cn/temp/%E5%BD%95%E5%B1%8F2025-12-04%2018.13.59.mov

  • 1***@qq.com (作者)

    可以把你这个demo代码分享下吗

    35 分钟前

要回复问题请先登录注册