Vue+iview 组件中通过v-for循环动态生成form表单进行表单校验

在做项目时,需要根据需要动态添加或新增表单,同时还需要对表单做校验。详情如下图:

刚开始做表单验证的时候,对于这个动态的表单验证有点难搞,试了好几种方法都没有搞定。最后按照下面这种方法实现了,以此篇博客留作记录,方便下次遇到类似的需求时直接开发。

XML 复制代码
			<row v-for="(item,index) in dataList">
				<i-Form :model="item" :ref="'dataList'+index" :label-width="language=='en'?140:120">
					<i-col span="10" >
						<Form-Item label="<@s.message code ="KSGL.LABLE.KAOSHIRQI"/>"  :rules="[{required: true, message: '必填'}]"A prop="ksrqs">
						<date-picker :value="item.ksrqs" @on-change="item.ksrqs=$event" format="yyyy-MM-dd" type="date" placeholder="" style="width: 200px"></date-picker>
						</Form-Item>
					</i-col>
					<i-col span="10" >
						<Form-Item label="备注1" prop="bz">
							<i-Input type="text" v-model="item.bz"></i-Input>
						</Form-Item>
					</i-col>
					<i-col span="4" >
						<i-Button size="small" type="error"	@click="handleRemove(index)"><@s.message code ='ACTION.REMOVE'/></i-Button>
					</i-col>
				</i-Form>
			</row>
javascript 复制代码
					let arr = [];
					for (var i=0;i<self.dataList.length;i++){
						let form = 'dataList' + i;
						self.$refs[form][0].validate((valid) => {
							if (valid) {
								arr.push(true);
							} else {
								arr.push(false);
							}
						});
					}
					let flag = arr.every((item) => {
						console.log('item',item)
						return item === true;
					});
					if (flag) {
						self.$Modal.confirm({
							title: i18n('MODEL.CONFIRM_TITLE'),
							content: i18n('MODEL.CONFIRM_CONTENT'),
							//loading: true,
							okText: i18n('MODEL.CONFIRM_OK_TEXT'),
							cancelText: i18n('MODEL.CONFIRM_CANCEL_TEXT'),
							onOk: function()  {

							},
							onCancel: function() {
								self.$Message.info({content:i18n('MODEL.CONFIRM_ON_CANCEL'),duration: 10,background: true,closable: true});
							}
						});
					} else {
						self.$Message.error({content:i18n('VALIDATE.FORM_ERROR'),duration: 10,background: true,closable: true});
					}
相关推荐
糕冷小美n8 小时前
elementuivue2表格不覆盖整个表格添加固定属性
前端·javascript·elementui
小哥不太逍遥8 小时前
Technical Report 2024
java·服务器·前端
沐墨染8 小时前
黑词分析与可疑对话挖掘组件的设计与实现
前端·elementui·数据挖掘·数据分析·vue·visual studio code
anOnion8 小时前
构建无障碍组件之Disclosure Pattern
前端·html·交互设计
threerocks8 小时前
前端将死,Agent 永生
前端·人工智能·ai编程
问道飞鱼9 小时前
【前端知识】Vite用法从入门到实战
前端·vite·项目构建
爱上妖精的尾巴9 小时前
8-10 WPS JSA 正则表达式:贪婪匹配
服务器·前端·javascript·正则表达式·wps·jsa
Zhencode9 小时前
Vue3响应式原理之ref篇
vue.js
shadow fish10 小时前
react学习记录(三)
javascript·学习·react.js
小疙瘩10 小时前
element-ui 中 el-upload 多文件一次性上传的实现
javascript·vue.js·ui