el-form 多層級表單的實(shí)現(xiàn)示例
前言
本篇文章基于 vue、element-ui
需求
前端開發(fā)過程中,經(jīng)常遇到表單開發(fā)的需求,element-ui 為我們帶來了極大的便利,前端只需要更專注于前端邏輯。
我們往往會遇到相對復(fù)雜的表單,比如下面的表單:

我們設(shè)計(jì)的時(shí)候可以把它設(shè)計(jì)成 3 級表單,即劃分表單到每一個(gè)校驗(yàn)項(xiàng)(輸入框,下拉框的等)
最終實(shí)現(xiàn)效果如下圖所示:

實(shí)現(xiàn)
el-form 使用,詳情可參見: Form 表單
有幾個(gè)比較重要的屬性:
- ref 相當(dāng)于標(biāo)簽的 id
- model 表單數(shù)據(jù)對象
- 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 級表單
獎勵(lì)設(shè)置 這一個(gè)校驗(yàn)項(xiàng)稍微復(fù)雜一點(diǎn),可以動態(tài)綁定 model 和 rules 實(shí)現(xiàn)子項(xiàng)的表單校驗(yàn)
<!-- 一級表單 -->
<el-form class="form" ref="form" :model="form" :rules="form_rules" size="small">
<el-form-item label="紅包活動標(biāo)題" prop="name">
<el-input v-model='form.name' placeholder="請輸入紅包活動標(biāo)題(活動展示)" />
</el-form-item>
<el-form-item :label="`獎勵(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`">
<!-- 二級表單 -->
<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: '請輸入獎勵(lì)名稱', 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)比較簡單,只需要獲取到每一個(gè)表單對象,并執(zhí)行validate即可,二級表單就遍歷拿到二級表單獨(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 多層級表單的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)el-form 多層級表單內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue+ElementUI實(shí)現(xiàn)表單動態(tài)渲染、可視化配置的方法
- Vue ElementUI之Form表單驗(yàn)證遇到的問題
- vue+elementUI實(shí)現(xiàn)表單和圖片上傳及驗(yàn)證功能示例
- 詳解ElementUI之表單驗(yàn)證、數(shù)據(jù)綁定、路由跳轉(zhuǎn)
- vue+element-ui集成隨機(jī)驗(yàn)證碼+用戶名+密碼的form表單驗(yàn)證功能
- select、radio表單回顯功能實(shí)現(xiàn)避免使用jquery載入賦值
- element 結(jié)合vue 在表單驗(yàn)證時(shí)有值卻提示錯(cuò)誤的解決辦法
相關(guān)文章
webpack開發(fā)vue-cli的項(xiàng)目實(shí)踐
本文主要介紹了webpack開發(fā)vue-cli的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
VUE.js實(shí)現(xiàn)動態(tài)設(shè)置輸入框disabled屬性
今天小編就為大家分享一篇VUE.js實(shí)現(xiàn)動態(tài)設(shè)置輸入框disabled屬性,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
vue3.0 的 Composition API 的使用示例
這篇文章主要介紹了vue3.0 的 Composition API 的使用示例,幫助大家更好的理解和學(xué)習(xí)vue,感興趣的朋友可以了解下2020-10-10
報(bào)錯(cuò)[vuex] unknown action type: userLogin問
這篇文章主要介紹了報(bào)錯(cuò)[vuex] unknown action type: userLogin問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
VUEJS實(shí)戰(zhàn)之構(gòu)建基礎(chǔ)并渲染出列表(1)
這篇文章主要為大家詳細(xì)介紹了VUEJS實(shí)戰(zhàn)之構(gòu)建基礎(chǔ)并渲染出列表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06
使用Vue開發(fā)一個(gè)實(shí)時(shí)性時(shí)間轉(zhuǎn)換指令
我們就來實(shí)現(xiàn)這樣一個(gè)Vue自定義指令v-time,將表達(dá)式傳入的時(shí)間戳實(shí)時(shí)轉(zhuǎn)換為相對時(shí)間。下面小編給大家?guī)砹耸褂肰ue開發(fā)一個(gè)實(shí)時(shí)性時(shí)間轉(zhuǎn)換指令,需要的朋友參考下吧2018-01-01
vue中el-date-picker type=daterange日期清空時(shí)不回顯的解決
這篇文章主要介紹了vue中el-date-picker type=daterange日期清空時(shí)不回顯的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07

