el-form-item的v-modal绑定是一个对象时,校验规则不生效

文章描述了在使用ElementUI的el-select组件时,当v-model绑定的对象属性发生变化时,验证失效的问题。通过测试和调整,发现解决方案是将rules精确到对象的字段,确保验证规则正确作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用el-select的v-modal绑定的是一个对象,测试发现没有选择选项,valid却是true;
以前一直这么写,没有发现这个问题,唯一不同就是绑定的对象

代码如下:

            <el-form :model="updateForm"  ref="updateForm" :rules='rules' label-width="100px" >
                <el-form-item label="项目联系人"  prop="updatecontactUser" >
                    <el-select v-model="updateForm.updatecontactUser"  value-key="id" filterable remote :remote-method="getAllUser" :loading="updatecontactloading" placeholder="请选择项目联系人(可输入邮箱或姓名检索)" style="width: 90%">
                        <el-option
                                v-for="itemUser in allUserList"
                                :key="itemUser.id"
                                :label="itemUser.username"
                                :value="itemUser">
                            <span style="float: left">{{ itemUser.username||'' }}</span>
                            <span style="float: right; color: #8492a6; font-size: 13px">{{ itemUser.userEmail||''}}</span>
                        </el-option>

                    </el-select>

                </el-form-item>


updateForm:{
                    updatecontactUser:{},//指定的项目联系人信息
                    projectID:'',
                    }rules: {
          updatecontactUser: [
                        { required: true, message: '请选择项目联系人', trigger: 'change'  }
                    ],},

于是添加一个绑定的非对象进行测试

            <el-form :model="updateForm" ref="updateForm" :rules='rules' label-width="100px">
                <el-form-item label="项目联系人" prop="updatecontactUser">
                    <el-select v-model="updateForm.updatecontactUser" value-key="id" filterable remote
                               :remote-method="getAllUser" :loading="updatecontactloading"
                               placeholder="请选择项目联系人(可输入邮箱或姓名检索)" style="width: 90%">
                        <el-option
                                v-for="itemUser in allUserList"
                                :key="itemUser.id"
                                :label="itemUser.username"
                                :value="itemUser">
                            <span style="float: left">{{ itemUser.username||'' }}</span>
                            <span style="float: right; color: #8492a6; font-size: 13px">{{ itemUser.userEmail||''}}</span>
                        </el-option>

                    </el-select>

                </el-form-item>
                <el-form-item label="项目联系人" prop="updatecontactUser1">
                    <el-select v-model="updateForm.updatecontactUser1" placeholder="请选择项目联系人(可输入邮箱或姓名检索)"
                               style="width: 90%">
                        <el-option
                                v-for="itemUser in allUserList"
                                :key="itemUser.id"
                                :label="itemUser.id"
                                :value="itemUser.id">
                            <span style="float: left">{{ itemUser.username||'' }}</span>
                            <span style="float: right; color: #8492a6; font-size: 13px">{{ itemUser.userEmail||''}}</span>
                        </el-option>
                    </el-select>
                </el-form-item>
            </el-form>

                updateForm: {
                    updatecontactUser: {},//指定的项目联系人信息
                    projectID: '',
                    updatecontactUser1: '',
                },
                rules: {
                    'updatecontactUser': [
                        {required: true, message: '请选择项目联系人', trigger: 'change'}
                    ],
                    updatecontactUser1: [
                        {required: true, message: '请选择项目联系人', trigger: 'change'}
                    ],
                },
测试结果:第一个校验无效,第二个校验生效

在这里插入图片描述

解决办法:将绑定对象的prop和rules都精确到字段

在这里插入图片描述
在这里插入图片描述

测试通过

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值