3***@qq.com
3***@qq.com
  • 发布:2021-08-26 16:51
  • 更新:2022-09-21 11:15
  • 阅读:4712

uni-form自定义校验规则在微信小程序端不生效

分类:uni-app
        rules: {  
          passwordRepeat: {  
            rules: [{  
              required: true,  
              errorMessage: ' ',  
            }, {  
              validateFunction: (rule, value, data) => data.password === value,  
              errorMessage: '两次输入的密码不一致',  
            }],  
          },  
        }

使用CLI进行开发,版本2.0.0-32220210818002
在微信小程序端,输入第一个字符时,校验生效,输入第二个字符开始,校验不再生效,在h5端功能正常
微信小程序端:

H5端:

2021-08-26 16:51 负责人:无 分享
已邀请:
9***@qq.com

9***@qq.com

把下面的代码粘到onReady中,并且删除uni-form中的 :rules="rules"

// #ifdef MP  
this.$nextTick(() => {  
    this.$refs.form.setRules(this.rules);  
});  
// #endif
5***@qq.com

5***@qq.com

解决了么?我也遇到一样的问题

1***@qq.com

1***@qq.com

注意 需要注意,如果需要使用 validateFunction 自定义校验规则,则不能采用 uni-forms 的 rules 属性来配置校验规则,这时候需要通过ref,在onReady生命周期调用组件的setRules方法绑定验证规则 无法通过props传递变量,是因为微信小程序会过滤掉对象中的方法,导致自定义验证规则无效。
https://ext.dcloud.net.cn/plugin?id=2773

1***@qq.com

1***@qq.com

我也遇到了,定义了校验手机号码的校验函数,第一次检验生效,第二次就不进行检验了。另外,我在onReady中也增加了this.$refs.form.setRules(this.rules);
不起作用

  • 8***@qq.com

    想问一下,有什么好用的办法吗? 我也遇到了同样的问题,找不到解决办法。

    2021-11-29 15:18

  • 1***@163.com

    回复 8***@qq.com: 我也遇到了同样的问题,怎么解决的

    2022-05-12 22:26

  • 9***@qq.com

    回复 1***@163.com: 你是不是uni-forms没删掉:rules

    2022-06-10 16:05

要回复问题请先登录注册