今天使用uview2的form表单开启规则验证的时候发现的验证始终并通过:
<u--form :model="model1" ref="uForm" :rules="rules">
// ...
<u-form-item label="日期" prop="date" :required="true">
<view @click="show=true">
<text v-if="!model1.date">请选择日期</text>
// formatDate是时间格式化方法,date实则为时间戳
<text v-else style="color:#000">{{formatDate(date)}}</text>
</view>
</u-form-item>
当触发提交的时候
submit() {
this.$refs.uForm.validate().then(res => {
uni.$u.toast('校验通过')
}).catch(errors => {
uni.$u.toast('校验失败')
})
}
校验始终不通过
下面是当前校验规则:
rules: {
date: [
{
required: true,
message: '日期不能为空',
trigger: ['change']
}
],
// ...
解决方案:
需添加type约束,如这里date是时间戳(数字类型),补充type为number即可,如下。
rules: {
date: [
{
required: true,
type: 'number',
message: '日期不能为空',
trigger: ['change']
}
],
// ...
导致原因可能是这里使用的自定义指定字段验证导致的,即每次选择日期后会触发下句代码:
this.$refs.uForm.validateField('date');
总之,希望本文会对你有所帮助~ ^_^