<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在專案開發中,我們經常會遇到表單儲存的功能,在表單儲存前,常常需要做表單必填項的校驗,校驗通過以後才去發請求儲存表單資料。
但是,這個表單如果是動態的,即:可以新增相同的表單。比如這個表單有輸入框和下拉框需要校驗,點選新增表格按鈕,再新增一個相同的表單,同樣新的這個表單對應的輸入框和下拉框也需要校驗。
本文記錄一下對應程式碼寫法思路,我們先看一下效果圖:
:model="ruleForm"
不過既然是要動態的,肯定是要回圈呢,所以,可以寫成這樣:ruleForm: { // 動態迴圈項陣列 formItemArr: [ { name: "", gender: "", }, ], },
// 新增一個表格 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) => {})
了
<el-form-item label="姓名" :prop="'formItemArr.' + index + '.name'" :rules="{ required: true, message: '請填寫', trigger: 'blur', }" > ......
演示的話,大家直接複製貼上即可
<template> <div class="box"> <el-button @click="addForm" size="mini" type="primary" plain >新增表格</el-button > <el-button @click="saveForm" size="mini" type="primary" plain >儲存表格</el-button > <br /> <br /> <el-form :model="ruleForm" ref="ruleForm" label-width="100px" class="formform" > <div class="formformItemClass" v-for="(item, index) in ruleForm.formItemArr" :key="index" > <el-form-item label="姓名" :prop="'formItemArr.' + index + '.name'" :rules="{ required: true, message: '請填寫', trigger: 'blur', }" > <el-input size="mini" v-model.trim="item.name" placeholder="請填寫" style="width: 200px" ></el-input> </el-form-item> <el-form-item label="性別" :prop="'formItemArr.' + index + '.gender'" :rules="{ required: true, message: '請選擇', trigger: 'change', }" > <el-select clearable size="mini" v-model="item.gender" placeholder="請選擇" > <el-option label="男" value="男"></el-option> <el-option label="女" value="女"></el-option> </el-select> </el-form-item> </div> </el-form> </div> </template> <script> export default { data() { return { ruleForm: { // 動態迴圈項陣列 formItemArr: [ { name: "", gender: "", }, ], }, }; }, methods: { // 新增一個表格 addForm() { let itemObj = { name: "", gender: "", }; this.ruleForm.formItemArr.push(itemObj); }, // 儲存表格 saveForm() { this.$refs["ruleForm"].validate((val) => { if (val) { console.log("符合要求,儲存成功", this.ruleForm); } else { console.log("error submit!!"); return false; } }); }, }, }; </script> <style lang="less" scoped> .box { width: 100%; height: 100%; box-sizing: border-box; padding: 24px; .formform { width: 360px; .formformItemClass { padding-top: 24px; border: 2px dashed #ccc; margin-bottom: 18px; } } } </style>
到此這篇關於v-for中動態校驗el-form表單項的實踐的文章就介紹到這了,更多相關v-for el-form表單項內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45