关于elemenui表单验证

描述下出现的bug

1 使用el-autocomplete的时候,如果输入的查询参数正好与最后查询出来的结果一样的话,则不会触发主动验证

2 像upload组件等,不能直接写v-model的组件,在进行操作的时候也会有这个问题

简单来说,就是 一般v-model的都没事,出事的一般都是自己封装的组件,通过@change去赋值的~

这里,如果输入‘大毛’然后进行选择的话,则会触发trigger中的change;

但是,如果输入‘李大毛’再点击下拉的话,则不会再触发change(这个应该是el-input封装中的change)了

解决办法

validateField 手动验证

<el-form :model="form" ref="form" :rules="rules">
<el-form-item label="客户姓名:" prop="customerId">
    <v-uservague :iscommission="true" placeholder="姓名/昵称/注册手机号/档案编号" @userVagueChange="userVagueChange"></v-uservague>
</el-form-item>

rules: {
  customerId: [{ required: true, message: '请输入客户姓名', trigger: 'change' }],
}

userVagueChange(val) {
    this.form.customerId = val.userId
    // 赋值之后再手动走一次rules中的customerId规则
    this.$refs.form.validateField('customerId', (err) => { })
}



// 当然,如果是 prop="personInfo.customerId"这种验证规则的话,也是一样的

<el-form :model="form" ref="form" :rules="rules">
<el-form-item label="客户姓名:" prop="personInfo.customerId">
    <v-uservague :iscommission="true" placeholder="姓名/昵称/注册手机号/档案编号" @userVagueChange="userVagueChange"></v-uservague>
</el-form-item>

rules: {
  'personInfo.customerId': [{ required: true, message: '请输入客户姓名', trigger: 'change' }],
}

userVagueChange(val) {
    this.form.personInfo.customerId = val.userId
    // 赋值之后再手动走一次rules中的customerId规则
    this.$refs.form.validateField('personInfo.customerId', (err) => { })
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值