uni-forms 校验 自定义校验规则使用说明【validateFunction 】

1,694 阅读1分钟

validateFunction 自定义校验规则

如果需要使用 validateFunction 自定义校验规则,则不能采用 uni-forms 的 rules 属性来配置校验规则,这时需要通过ref,在 onReady 生命周期 调用组件的 setRules 方法绑定验证规则

无法通过props 传递变量,是因为微信小程序会过滤掉对象中的方法,导致自定义验证规则无效。

如果使用了 validateFunction 且 required 为 false 的情况,表现为不填写内容校验,有内容才校验,所以内容为空时 validateFunction 不会执行。

<uni-forms ref="feedbackForm" class="feedback__form" :modelValue="formData" :labelWidth="90">
 <uni-forms-item label="用户姓名:" required name="username">
  <uni-easyinput v-model.trim="formData.username" maxlength="50" placeholder="请输入用户姓名" />
 </uni-forms-item>
 <uni-forms-item label="联系电话:" required name="telephone" >
  <uni-easyinput v-model="formData.telephone" maxlength="11" placeholder="请输入联系电话" />
 </uni-forms-item>
</uni-forms>
rules: {
      username: {
        rules: [{
          required: true,
          errorMessage: '用户姓名不能为空'
        }]
      },
      telephone: {
        rules: [{
          required: true,
          errorMessage: '联系电话不能为空'
        }, {
          validateFunction: function (rule, value, data, callback) {
            if (!/^[1][3,4,5,6,7,8,9][0-9]{9}$/.test(value)) {
              callback('联系电话格式不正确,请重新填写')
            }
          }
        }]
      }
},
onReady(){
  this.$refs.feedbackForm.setRules(this.rules)
},