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)
},