使用element-ui 进行表单验证时,对于绑定v-model赋值的input框,没有触发change、blur事件,因此表单提交时验证不通过。解决办法如下:
<template> <div> <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px"> <el-form-item label="id" prop="id"> <el-input id="inputid" v-model="ruleForm.id"></el-input> </el-form-item> <el-form-item label="活动名称" prop="name"> <el-input v-model="ruleForm.name"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button> <el-button @click="resetForm('ruleForm')">重置</el-button> </el-form-item> </el-form> </div> </template> <script> export default { data () { return { ruleForm: { name: '', id: '' }, rules: { name: [ { required: true, message: '请输入活动名称', trigger: 'blur' }, { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' } ], id: [ { required: true, message: 'id不能为空', trigger: 'change' } ] } } }, methods: { doAddChange () { const $element = document.getElementById('inputid') $element.addEventListener('change', () => { $element.value = 'value' }, false) }, submitForm (formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('submit!') } else { console.log('error submit!!') return false } }) }, resetForm (formName) { this.$refs[formName].resetFields() } } } </script>
input校验规则trigger设置为change,赋值时,执行doAddChange 方法为input框添加change事件,这样就能触发校验了