vue2+element ui el-select下拉框清空 会自动触发校验规则的解决方案

本文探讨了在使用低版本ElementUI时遇到的表单验证问题,特别是`clearValidate`方法在低版本中不支持的情况。通过修改验证规则,例如将下拉框`select`的触发器`trigger`设置为`blur`而不是默认的`change`,以避免自动校验。这种方式可以解决在特定版本中表单验证的兼容性问题。

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

因为element ui是低版本

 this.$refs['ruleForm'].clearValidate('name'); 低版本不支持

可以试着 

rules: {

input:[{ required: true, message: '输入框', trigger: 'blur' }],

select: [{ type: 'number', required: true, message: '请选择', trigger: 'blur' }]

}

解释为什么下拉框select 为什么用 trigger: 'blur':下拉框会触发trigger: 'change',所以不能用这个,用 trigger: 'blur' 反着来,就不会触发自动校验

<el-dialog :close-on-click-modal=“false” :title=“form && form.id ? ‘查看白名单’ : ‘新增白名单’” :visible.sync=“dialogVisible” width=“800px” @close=“handleCancel” > <el-select v-model=“form.signerId” placeholder=“人员工号或姓名” clearable filterable remote :remote-method=“searchStaff” :loading=“loadingStaff” style=“width: 240px” @change=“handleStaffChange” > <el-form-item label="免学习产品" required></el-form-item> <!-- 学习产品选择 --> <el-form-item label="保司" required> <el-radio-group v-model="form.insuranceCompanyScope" @change="handleScopeChange($event, 1)" > <el-radio :label="1">全部</el-radio> <el-radio :label="2">部分</el-radio> </el-radio-group> </el-form-item> <!-- 部分产品选择区域 --> <el-form-item label="" v-if="form.insuranceCompanyScope =='2'"> <el-select multiple collapse-tags v-model="form.insuranceCompanyIds" placeholder="请选择" style="width: 280px" filterable > <el-option v-for="item in insuranceList" :key="item.id" :label="`${item.name}(${item.areaInfo})`" :value="item.id" /> </el-select> </el-form-item> <el-form-item label="产品" required v-if="form.insuranceCompanyScope =='2'"> <el-radio-group v-model="form.productScope" @change="handleScopeChange($event, 2)" > <el-radio :label="1">全部</el-radio> <el-radio :label="2">部分</el-radio> </el-radio-group> </el-form-item> <el-form-item v-if="form.productScope=='2' &&form.insuranceCompanyScope =='2'"> <el-select v-model="form.product" placeholder="请输入产品编码和名称" clearable filterable remote :remote-method="searchProduct" :loading="loadingProduct" style="width: 240px" > <el-option v-for="sitem in productOptions" :key="sitem.productId" :value="sitem.productId" :label="`${sitem.productName} (${sitem.productId})`" /> </el-select> <el-button type="primary" size="mini" @click="addProduct"> 新增 </el-button> </el-form-item> <!-- 已选产品列表 --> <div v-if="form.productScope=='2' &&form.insuranceCompanyScope =='2'"> <el-table :data="selectedProducts" border style="width: 100%; margin-top: 10px" :show-header="selectedProducts.length > 0 && form.productScope=='2'" > <el-table-column prop="productId" label="产品编码"></el-table-column> <el-table-column prop="productName" label="产品名称" ></el-table-column> <el-table-column prop="productSimpleChineseName" label="简体中文名称" ></el-table-column> <el-table-column prop="productEnglishName" label="英文名称" ></el-table-column> <el-table-column prop="insuranceCompanyName" label="保司"></el-table-column> <el-table-column prop="insuranceCompanyArea" label="地区"></el-table-column> <el-table-column prop="insType" label="险种" :formatter="(row) => (row.insType == '1' ? '长险' : '短险' || '-')" ></el-table-column> <el-table-column prop="productType" label="分类" ></el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button type="text" size="small" class="delete-btn" @click="deleteProduct(scope.$index)" > 删除 </el-button> </template> </el-table-column> </el-table> </div> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="handleCancel">取消</el-button> <el-button type="primary" @click="handleSave">保存</el-button> </div> </el-dialog>提交校验
最新发布
08-20
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值