日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

vue element table中自定義一些input的驗證操作

瀏覽:35日期:2023-01-05 13:38:41

官網原話

Form 組件提供了表單驗證的功能,只需要通過 rules 屬性傳入約定的驗證規則,并將 Form-Item 的 prop 屬性設置為需校驗的字段名即可。

表單

el-form表單必備以下三個屬性:

:model='ruleForm' 綁定的數據內容

:rules='rules' 動態綁定的rules,表單驗證規則

ref='ruleForm' 綁定的對象

template模塊

其實問題關鍵就在于如何給el-form-item動態綁定prop

:prop='’tableData.’ + scope.$index + ’.字段名’'

<template> <div class='TestWorld'> <el-button @click='addLine'>添加行數</el-button> <el-button @click='save(’formDom’)'>baocun</el-button> <el-form :rules='formData.rules' :model='formData' ref='formDom' class='demo-ruleForm'> <el-table :data='formData.tableData' style='width: 100%'> <el-table-column prop='bookname' label='書名'> <template slot-scope='scope'> <el-form-item :prop='’tableData.’ + scope.$index + ’.bookname’' :rules=’formData.rules.name’> <el-input v-model='scope.row.bookname' placeholder='書名' ></el-input> </el-form-item> </template> </el-table-column> <el-table-column prop='bookvolume' label='冊數'> <template slot-scope='scope'> <el-form-item :prop='’tableData.’ + scope.$index + ’.bookvolume’' :rules='formData.rules.volume1'> <el-input v-model.number='scope.row.bookvolume' placeholder='冊數'></el-input> </el-form-item> </template> </el-table-column> <el-table-column prop='bookbuyer' label='購買者'> <template slot-scope='scope'> <el-form-item :prop='’tableData.’ + scope.$index + ’.bookbuyer’' :rules=’formData.rules.name’> <el-input v-model='scope.row.bookbuyer' placeholder='購買者'></el-input> </el-form-item> </template> </el-table-column> <el-table-column prop='bookborrower' label='借閱者'> <template slot-scope='scope'> <el-form-item :prop='’tableData.’ + scope.$index + ’.bookborrower’' :rules=’formData.rules.name’> <el-input v-model='scope.row.bookborrower' placeholder='借閱者'></el-input> </el-form-item> </template> </el-table-column> <el-table-column prop='bookbuytime' label='購買日期'> <template slot-scope='scope'> <el-form-item :prop='’tableData.’ + scope.$index + ’.bookbuytime’' :rules=’formData.rules.data1’> <el-date-picker v-model='scope.row.bookbuytime' type='date' placeholder='購買日期'> </el-date-picker> </el-form-item> </template> </el-table-column> <el-table-column label='操作'> <template slot-scope='scope'> <el-button size='mini' type='danger' v-if='!scope.row.editing' icon='el-icon-delete' @click='handleDelete(scope.$index, scope.row)'>刪除 </el-button> </template> </el-table-column> </el-table> </el-form> </div></template>

vuejs 代碼

export default { name:’TestWorld’, data() { return { formData:{ rules:{ name:{type:'string', required:true, message:'必填字段', trigger:'blur' }, volume1:{ type:'number',required:true,message:'冊數必須為數字值',trigger:'change' }, data1:{type:'date', required:true, message:'請選擇日期', trigger:'change' } }, tableData:[{ bookname: ’’, bookbuytime: ’’, bookbuyer: ’’, bookborrower: ’’, bookvolume:’’ }] } } }, methods:{ addLine(){ //添加行數 var newValue = { bookname: ’’, bookbuytime: ’’, bookbuyer: ’’, bookborrower: ’’, bookvolume:’’ }; //添加新的行數 this.formData.tableData.push(newValue); }, handleDelete(index){ //刪除行數 this.formData.tableData.splice(index, 1) }, save(formName){ //保存 this.$refs[formName].validate((valid,model) => { console.log(valid) console.log(JSON.stringify(model)) if (valid) { alert(’submit!’); } else { console.log(’error submit!!’); return false; } }); }, handleDelete(index){ //刪除行數 console.log(index) this.formData.tableData.splice(index, 1) } } }

補充知識:element-ui 跟form 和table 動態表單校驗,數組的深層次校驗

首先數據結構是這樣的

let cchiCombineBill = [ { infoId: ’1716’, clinicCchiCombineName: ’星期四’, clinicCchiCombineId: ’3’, serviceCount: ’1’, cchis: [ { cchiCode: ’CAAJ1000’ }, { cchiCode: ’CAAJ1400’ } ] }, { infoId: ’1816’, clinicCchiCombineName: ’星期五’, clinicCchiCombineId: ’3’, serviceCount: ’1’, cchis: [ { cchiCode: ’CAAJ1000’ }, { cchiCode: ’CAAJ1400’ } ] } ]

vue element table中自定義一些input的驗證操作

vue element table中自定義一些input的驗證操作

<template> <div class='bill-wrapper'> <p class='title-p'>費用調整</p> <el-divider /> <el-form ref='mainForm' :model='fromData' class='form-new'> <section class='pay-section'> <p class='pay-p'> <span class='pay-span'>醫療服務操作</span> </p> <div> <section v-for='(item ,index) in fromData.cchiCombineBill' :key='index'> <p class='tip-p'> {{ item.clinicCchiCombineName }} <span class='tip-span'>(服務數量:{{ item.serviceCount }})</span> </p> <el-table :data='item.cchis' border style='width: 100%;'> <el-table-column prop='cchiCode' label='CCHI 編碼' min- /> <el-table-column label='調整后支付價格' min-width='160'><template slot-scope='scope'> <el-form-item :prop='`cchiCombineBill.${index}.cchis.${scope.$index}.adjustPaymentPrice`' :rules='fromData.fromaDataRules.adjustPaymentPrice' > <el-input v-model='scope.row.adjustPaymentPrice' placeholder='請輸入' /> </el-form-item></template> </el-table-column> </el-table> </section> </div> </section> </el-form> <p class='new-p'> <!-- <el-button type='primary' @click='returnFn'>返回</el-button> --> <el-button type='primary' @click='sureFn'>保存</el-button> </p> </div></template><script>import { numFixTwo } from ’@/utils/tool/regExp’export default { data() { const validateNumFixTwo = (rule, value, callback) => { if (numFixTwo(value)) { callback() } else { callback(new Error(’數字,保留小數點后兩位’)) } } return { fromData: { cchiCombineBill: [], fromaDataRules: { adjustPaymentPrice: [ { required: true, message: ’請輸入調整后價格’, trigger: ’change’ }, { required: true, trigger: ’change’, validator: validateNumFixTwo } ] } } } }, created() { let cchiCombineBill = [ { infoId: ’1716’, clinicCchiCombineName: ’星期四’, clinicCchiCombineId: ’3’, serviceCount: ’1’, cchis: [ { cchiCode: ’CAAJ1000’ }, { cchiCode: ’CAAJ1400’ } ] }, { infoId: ’1816’, clinicCchiCombineName: ’星期五’, clinicCchiCombineId: ’3’, serviceCount: ’1’, cchis: [ { cchiCode: ’CAAJ1000’ }, { cchiCode: ’CAAJ1400’ } ] } ] cchiCombineBill.map(item => { let cchis = [] item.cchis.map(item2 => { this.$set(item2, ’adjustPaymentPrice’, ’’) cchis.push(item2) }) item.cchis = cchis this.fromData.cchiCombineBill.push(item) }) }, methods: { getFormPromise(form) { return new Promise(resolve => { form.validate(res => { resolve(res) }) }) }, sureFn() { const mainForm = this.$refs.mainForm // 用戶信息 Promise.all( [mainForm].map(this.getFormPromise) // 校驗各個表單是否合格 ).then(res => { const validateResult = res.every(item => !!item) if (validateResult) { console.log(’表單都校驗通過’) } else { this.$message({ message: `填寫有誤,請檢查`, type: ’warning’ }) } }) } }}</script><style lang='scss' scoped>.bill-wrapper { min-width: 1110px; margin: 0 auto; padding: 20px; /deep/ .el-divider--horizontal { margin-top: 8px; } // /deep/ .el-form-item { // margin-bottom: 30px; // } .return-p { margin-bottom: 20px; } .new-p { margin-top: 40px; text-align: center; .btn:first-child { margin-right: 30px; } } .pay-section { margin-top: 50px; .pay-p { padding-left: 10px; // border: 1px solid #e8e8e8; height: 30px; line-height: 30px; font-size: 14px; margin-top: 20px; background: #409eff; color: white; } } .sub-title { color: #444; margin-top: 30px; } .tip-p { margin-top: 15px; color: #409eff; font-size: 14px; margin-bottom: 5px; .tip-span { font-size: 12; } }}</style>

之前一直是數組結合table 一層的校驗,琢磨了很久才終于領悟 element-ui 的 form表單校驗的精髓所在,

那就是 :prop 一定是遍歷的數組’cchiCombineBill.’ 加上(cchiCombineBill,index)中 的index,再加上具體要校驗的字段。

以上這篇vue element table中自定義一些input的驗證操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲一区二区成人| 亚洲一区日韩| 国产精品亚洲欧美一级在线| 国产精品密蕾丝视频下载| 国内自拍视频一区二区三区| av资源新版天堂在线| 久久精品主播| 国产精品sm| 亚洲欧美日韩国产一区| 五月婷婷六月综合| 综合日韩在线| 精品免费av一区二区三区| 国产真实久久| 日韩精品午夜视频| 国产成人久久精品一区二区三区| 成人免费网站www网站高清| 亚洲一区亚洲| 欧美在线不卡| 久久久五月天| 午夜精品福利影院| 麻豆视频在线观看免费网站黄 | 欧美亚洲tv| 私拍精品福利视频在线一区| 中文字幕一区二区精品区| 久久不见久久见免费视频7 | 美女精品久久| 亚洲精品1区| 免费在线欧美黄色| 国产日韩综合| 精品一区二区三区免费看| 亚洲欧美日本日韩| 美女精品久久| 玖玖玖国产精品| 国产一区二区三区不卡视频网站| 免播放器亚洲| 精品美女视频| 婷婷综合成人| 国产国产精品| 精品久久97| 天海翼精品一区二区三区| 日本欧美不卡| 美女久久精品| 一区二区91| 肉色欧美久久久久久久免费看| 最新日韩欧美| 久草精品视频| 亚洲三级毛片| 欧美va天堂在线| 精品国产美女a久久9999| 日韩一区二区三免费高清在线观看| 日本韩国欧美超级黄在线观看| 国产情侣久久| 蜜臀久久99精品久久久久宅男| 香蕉久久精品| 国产videos久久| 麻豆精品在线观看| 日韩精品免费一区二区夜夜嗨 | 麻豆视频久久| 日本少妇一区二区| 亚洲欧美日本国产专区一区| 日韩精品永久网址| 欧美aa在线视频| 日韩高清中文字幕一区| 六月天综合网| 在线日韩欧美| 国产中文在线播放| 麻豆传媒一区二区三区| 日本vs亚洲vs韩国一区三区二区| 国产亚洲在线| 欧美 日韩 国产一区二区在线视频| 91偷拍一区二区三区精品| 欧美欧美黄在线二区| 日韩欧美四区| 亚洲欧美久久精品| 性欧美精品高清| 国产精品毛片一区二区三区| 在线成人动漫av| 日韩一区二区中文| 亚洲天堂av影院| 国产一区二区三区免费在线| 美腿丝袜在线亚洲一区| 国产精品一线| 国产免费av一区二区三区| 国产精品一区二区三区av麻| 亚洲精品欧美| 日韩精品一级二级| 亚洲欧美日韩国产| 亚洲免费网址| 伊人精品在线| 午夜在线一区| 免费国产亚洲视频| 亚洲欧美日本国产专区一区| 黄色亚洲在线| 日韩中文字幕91| 久久亚洲二区| 午夜宅男久久久| 日韩精品一二三| 婷婷综合一区| 国产精品久久久久久久久久白浆 | 久热精品在线| 免费黄网站欧美| 亚洲精品在线二区| 日本亚洲欧洲无免费码在线| 日本综合精品一区| 国产日韩欧美一区在线| 麻豆精品久久久| 国产日韩欧美一区二区三区| 国产精品一站二站| 国产区精品区| 91日韩免费| 久久视频国产| 免费精品视频| 日本强好片久久久久久aaa| 国产精品s色| 麻豆精品蜜桃| 蜜臀国产一区二区三区在线播放| 日本视频一区二区| 成人日韩av| 婷婷丁香综合| 日韩精品中文字幕吗一区二区| 国产精品超碰| 久久国产日本精品| 性色一区二区| 国产精品s色| 亚洲二区免费| 日韩av一区二| 日韩高清成人| 亚洲另类黄色| 国精品产品一区| 激情婷婷久久| 日韩欧美美女在线观看| 麻豆精品一区二区综合av| 激情黄产视频在线免费观看| 黄色不卡一区| 欧美一区自拍| 久久久久美女| 免费高潮视频95在线观看网站| 国产精品久久久网站| 欧洲av不卡| 亚洲精品韩国| 岛国av在线网站| 蜜桃一区二区三区在线观看| 久久亚洲精精品中文字幕| 亚洲女同一区| 欧美黄色一区二区| 欧美日韩国产传媒| 国产精品视频一区二区三区| 久久中文视频| 国产精品一区免费在线| 久久国产影院| 五月国产精品| 久久三级视频| 91亚洲无吗| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 日韩在线高清| 五月国产精品| 欧洲亚洲一区二区三区| 日韩精品一级| 99久久www免费| 久久99免费视频| 欧美综合国产| 日韩欧美精品一区| 蜜桃久久久久久久| 视频一区欧美精品| 免费亚洲婷婷| 美女精品在线| 日韩欧美精品综合| 国产精品一区二区三区美女| 好看的亚洲午夜视频在线| 久久99国产精品视频| 丝袜a∨在线一区二区三区不卡| 国产福利91精品一区二区| 日韩激情视频网站| 在线视频日韩| 美女av在线免费看| 国产精品一区2区3区| 影音先锋久久| 色88888久久久久久影院| 欧美视频精品全部免费观看| 制服诱惑一区二区| 青青久久av| 国产成人精品一区二区免费看京| 日韩二区三区四区| 99日韩精品| 日韩中文在线播放| 国产精品99一区二区三区| 久久天堂成人| 欧美精品自拍| 欧美不卡高清一区二区三区| 国产日韩在线观看视频| 亚洲精品欧洲| 美女91精品| 在线国产一区| 国产一区清纯| 久久久噜噜噜| 日韩中文在线电影| 91综合视频| 国产一区二区色噜噜| 国产精品v亚洲精品v日韩精品| 日韩国产精品久久久|