elementUI el-form表单的upload(必填校验)上传文件后立即校验

1.使用upSuccess

 upSuccess(res) {
      this.$message.success("上传成功!");
	  this.$refs['ruleForm'].clearValidate(['visibleFileUrl'])	//清除提示
	  this.$refs.ruleForm.validateField('visibleFileUrl');    //或者校验某个字段 二者选其一
	  //(['visibleFileUrl'])为绑定的prop
    },

2.使用watch监听

watch:{
"ruleForm.visibleFileUrl"(){
if(this.ruleForm.visibleFileUrl){
			this.$refs['ruleForm'].clearValidate(['visibleFileUrl']) //清除提示
			 this.$refs.ruleForm.validateField('visibleFileUrl');  //或者校验某个字段  二者选其一
		}
}
}
在使用 Element UI 的 `el-form` 组件进行表单校验时,如果必填字段(required)没有生效,可能的原因包括以下几个方面: ### 1. 表单项未正确绑定 `prop` 属性 在 `el-form` 中,每个需要校验表单项必须包裹在 `el-form-item` 标签中,并且该标签需要设置 `prop` 属性。`prop` 的值应与 `model` 中对应的字段名一致,否则校验规则无法正确应用[^1]。 例如: ```vue <el-form :model="form" :rules="rules" ref="formRef"> <el-form-item label="用户名" prop="username"> <el-input v-model="form.username"></el-input> </el-form-item> </el-form> ``` 如果遗漏了 `prop` 或者 `prop` 名称与 `model` 不匹配,则校验不会触发。 ### 2. 校验规则未正确配置 `rules` 对象中的规则结构必须与 `model` 字段对应,并且 `required: true` 需要配合 `message` 和 `trigger` 使用。例如: ```javascript rules: { username: [ { required: true, message: '用户名不能为空', trigger: 'blur' }, { min: 3, max: 10, message: '长度在3到10个字符', trigger: 'blur' } ] } ``` 如果规则未定义或格式错误,如缺少 `required`、`message` 或 `trigger`,则校验逻辑不会按预期执行。 ### 3. 表单提交方式不正确 调用 `el-form` 的 `validate` 方法是手动触发校验的标准方式。如果直接通过原生 HTML 的 `submit` 事件提交表单,而没有调用 `validate` 方法,则校验不会生效[^1]。 正确的提交方式如下: ```vue <el-form ref="formRef" :model="form" :rules="rules"> <!-- 表单--> <el-button @click="submitForm">提交</el-button> </el-form> <script> export default { methods: { submitForm() { this.$refs.formRef.validate((valid) => { if (valid) { alert('验证通过'); } else { alert('请检查表单内容'); return false; } }); } } } </script> ``` ### 4. 数据初始化问题 如果 `model` 中的字段初始值为空字符串或未定义,但 `rules` 要求其为必填项,那么即使用户未输入任何内容,也可能导致校验失败。确保数据模型的初始状态与校验规则一致。 例如: ```javascript data() { return { form: { username: '' // 初始为空 }, rules: { username: [{ required: true, message: '用户名不能为空', trigger: 'blur' }] } }; } ``` ### 5. 动态更新表单字段 如果某些字段是动态添加或隐藏的,需注意 `el-form` 并不会自动识别这些变化。可以使用 `$set` 方法确保 Vue 能够追踪属性的变化,或者在更新字段后手动调用 `clearValidate` 或 `validateField` 方法来刷新校验状态。 示例: ```javascript this.$set(this.form, 'newField', ''); this.$refs.formRef.validateField('newField'); ``` ### 6. 使用 `v-if` 控制表单项显示 如果某个 `el-form-item` 使用了 `v-if` 条件渲染,而该条件为 `false`,则该字段不会被包含在表单中,自然也无法参与校验。建议使用 `v-show` 替代 `v-if`,以确保字段始终存在于 DOM 中。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值