共计 1460 个字符,预计需要花费 4 分钟才能阅读完成。
导读 | 在项目开发中,我们经常会遇到表单保存的功能,本文主要介绍了 v -for 中动态校验 el-form 表单项的实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 |
问题描述
在项目开发中,我们经常会遇到表单保存的功能,在表单保存前,常常需要做表单必填项的校验,校验通过以后才去发请求保存表单数据。
但是,这个表单如果是动态的,即:可以新增相同的表单。比如这个表单有输入框和下拉框需要校验,点击添加表格按钮,再新增一个相同的表单,同样新的这个表单对应的输入框和下拉框也需要校验。
本文记录一下对应代码写法思路,我们先看一下效果图:
效果图
代码思路
表单的主数据是要写成对象形式 :model=”ruleForm” 不过既然是要动态的,肯定是要循环呢,所以,可以写成这样:
ruleForm: { | |
// 动态循环项数组 | |
formItemArr: [ | |
{ | |
name: "", | |
gender: "", | |
}, | |
], | |
}, |
点击添加表格的时候,就可以直接 push 对应项就行啦,即,这样:
// 添加一个表格 | |
addForm () { | |
let itemObj = { | |
name: "", | |
gender: "", | |
}; | |
this .ruleForm.formItemArr.push(itemObj); | |
}, |
重点来喽,因为是循环的,所以 prop 也要变成动态的了,要拼接上 index,就变成根据索引去找对应的校验项了,即为::prop=”‘formItemArr.’ + index + ‘.name'”,这样的话,就变成了:prop=”formItemArr.0.name”、prop=”formItemArr.1.name”、prop=”formItemArr.2.name” … 这样的话,就可以照顾到每一项中的每一个绑定的值了,校验就不会漏掉
校验规则写成内联就可以触发校验函数 this.$refs[“ruleForm”].validate((val) => {}) 了
......
完整代码
演示的话,大家直接复制粘贴即可
添加表格 | |
保存表格 | |
export default {data() { | |
return {ruleForm: { | |
// 动态循环项数组 | |
formItemArr: [ | |
{ | |
name: "", | |
gender: "", | |
}, | |
], | |
}, | |
}; | |
}, | |
met hods: { | |
// 添加一个表格 | |
add Form() { | |
let ite mObj = { | |
name: "", | |
gender: "", | |
}; | |
this.rule Form.form Item Arr.push(itemObj); | |
}, | |
// 保存表格 | |
save Form() {this .$refs["ruleForm"].validate((val) => {if (val) {con sole.log("符合要求,保存成功", this.ruleForm); | |
} else {cons ole.log("error submit!!"); | |
re turn false; | |
} | |
}); | |
}, | |
}, | |
}; | |
. box { | |
wi dth: 100%; | |
hei ght: 100%; | |
box -sizing: border-box; | |
pad ding: 24px; | |
.for mform { | |
wi dth: 360px; | |
.for mformItemClass { | |
pa dding-top: 24px; | |
bo rder: 2px dashed | |
ma rgin-bottom: 18px; | |
} | |
} | |
} |
到此这篇关于 v -for 中动态校验 el-form 表单项的实践的文章就介绍到这了。
正文完
星哥玩云-微信公众号
