el-form 多層級(jí)表單的實(shí)現(xiàn)示例
前言
本篇文章基于 vue、element-ui
需求
前端開(kāi)發(fā)過(guò)程中,經(jīng)常遇到表單開(kāi)發(fā)的需求,element-ui 為我們帶來(lái)了極大的便利,前端只需要更專(zhuān)注于前端邏輯。
我們往往會(huì)遇到相對(duì)復(fù)雜的表單,比如下面的表單:
我們?cè)O(shè)計(jì)的時(shí)候可以把它設(shè)計(jì)成 3 級(jí)表單,即劃分表單到每一個(gè)校驗(yàn)項(xiàng)(輸入框,下拉框的等)
最終實(shí)現(xiàn)效果如下圖所示:
實(shí)現(xiàn)
el-form 使用,詳情可參見(jiàn): Form 表單
有幾個(gè)比較重要的屬性:
- ref 相當(dāng)于標(biāo)簽的 id
- model 表單數(shù)據(jù)對(duì)象
- rules 表單驗(yàn)證規(guī)則
- prop 表單域 model 字段
- label 標(biāo)簽文本
在提交按鈕的時(shí)候,執(zhí)行validate方法即可;實(shí)時(shí)校驗(yàn)可在rules中設(shè)置校驗(yàn)項(xiàng) trigger: 'change'即可
1.el-form 設(shè)計(jì)
劃分表單到每一個(gè)校驗(yàn)項(xiàng)(輸入框,下拉框的等),可以設(shè)計(jì)成 3 級(jí)表單
獎(jiǎng)勵(lì)設(shè)置 這一個(gè)校驗(yàn)項(xiàng)稍微復(fù)雜一點(diǎn),可以動(dòng)態(tài)綁定 model 和 rules 實(shí)現(xiàn)子項(xiàng)的表單校驗(yàn)
<!-- 一級(jí)表單 --> <el-form class="form" ref="form" :model="form" :rules="form_rules" size="small"> <el-form-item label="紅包活動(dòng)標(biāo)題" prop="name"> <el-input v-model='form.name' placeholder="請(qǐng)輸入紅包活動(dòng)標(biāo)題(活動(dòng)展示)" /> </el-form-item> <el-form-item :label="`獎(jiǎng)勵(lì)設(shè)置(${form.seconde_form.length}/${max_reward_module_num})`" prop="seconde_form"> <el-card class="reward_module" v-for="(second_form, second_form_index) in form.seconde_form" :key="`${second_form_index}_second_form`"> <!-- 二級(jí)表單 --> <el-form class="second_form" :ref="`second_form_${second_form_index}`" :model="second_form" :disabled="is_form_item_disabled" inline size="small"> <el-form-item prop="packet_name" :key="`${second_form_index}_packet_name`" :rules="[{ required: true, message: '請(qǐng)輸入獎(jiǎng)勵(lì)名稱(chēng)', trigger: 'change' }]" style="width:150px;margin-right:20px;"> <el-input v-model="second_form.packet_name" /> </el-form-item> </el-form> </el-card> </el-form-item> </el-form>
2.el-form-item 子項(xiàng)校驗(yàn)
校驗(yàn)比較簡(jiǎn)單,只需要獲取到每一個(gè)表單對(duì)象,并執(zhí)行validate即可,二級(jí)表單就遍歷拿到二級(jí)表單獨(dú)享執(zhí)行同樣的操作
定義 form 數(shù)據(jù)模型:
form: { name: '', seconde_form: [ { packet_name: '', }, ], },
封裝一個(gè) check_form 方法
/** * 表單校驗(yàn)方法 * @param {String} form_name */ function $check_form(form_name) { const form_component = this.$refs[form_name][0] ? this.$refs[form_name][0] : this.$refs[form_name]; return new Promise((resolve, reject) => { form_component.validate(valid => { if (valid) { resolve(); } else { reject(); } }); }); }
點(diǎn)擊按鈕的時(shí)候執(zhí)行 checkParam 方法
async checkParam(form_name) { try { await this.$check_form(form_name); for (let i = 0; i < this.form.seconde_form.length; i++) { await this.$check_form(`second_form_${i}`); } // next step do something } catch (e) { console.log(e); } },
到此這篇關(guān)于el-form 多層級(jí)表單的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)el-form 多層級(jí)表單內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue+ElementUI實(shí)現(xiàn)表單動(dòng)態(tài)渲染、可視化配置的方法
- Vue ElementUI之Form表單驗(yàn)證遇到的問(wèn)題
- vue+elementUI實(shí)現(xiàn)表單和圖片上傳及驗(yàn)證功能示例
- 詳解ElementUI之表單驗(yàn)證、數(shù)據(jù)綁定、路由跳轉(zhuǎn)
- vue+element-ui集成隨機(jī)驗(yàn)證碼+用戶(hù)名+密碼的form表單驗(yàn)證功能
- select、radio表單回顯功能實(shí)現(xiàn)避免使用jquery載入賦值
- element 結(jié)合vue 在表單驗(yàn)證時(shí)有值卻提示錯(cuò)誤的解決辦法
相關(guān)文章
vue中el-form-item展開(kāi)項(xiàng)居中的實(shí)現(xiàn)方式
這篇文章主要介紹了vue中el-form-item展開(kāi)項(xiàng)居中的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10vue結(jié)合g6實(shí)現(xiàn)樹(shù)級(jí)結(jié)構(gòu)(compactBox?緊湊樹(shù))
本文主要介紹了vue結(jié)合g6實(shí)現(xiàn)樹(shù)級(jí)結(jié)構(gòu),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06elementUI el-input 只能輸入正整數(shù)驗(yàn)證的操作方法
這篇文章主要介紹了elementUI el-input 只能輸入正整數(shù)驗(yàn)證,本文給大家詳細(xì)講解對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11在Vue中用canvas實(shí)現(xiàn)二維碼和圖片合成海報(bào)的方法
這篇文章主要介紹了在Vue中用canvas實(shí)現(xiàn)二維碼和圖片合成海報(bào)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06快速解決Vue、element-ui的resetFields()方法重置表單無(wú)效的問(wèn)題
這篇文章主要介紹了快速解決Vue、element-ui的resetFields()方法重置表單無(wú)效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08