中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

el-form 多層級表單的實現示例

發布時間:2020-09-20 13:32:41 來源:腳本之家 閱讀:587 作者:小豪看世界 欄目:開發技術

前言

本篇文章基于 vue、element-ui

需求

前端開發過程中,經常遇到表單開發的需求,element-ui 為我們帶來了極大的便利,前端只需要更專注于前端邏輯。

我們往往會遇到相對復雜的表單,比如下面的表單:

el-form 多層級表單的實現示例

我們設計的時候可以把它設計成 3 級表單,即劃分表單到每一個校驗項(輸入框,下拉框的等)

最終實現效果如下圖所示:

el-form 多層級表單的實現示例

實現

el-form 使用,詳情可參見: Form 表單

有幾個比較重要的屬性:

  • ref 相當于標簽的 id
  • model 表單數據對象
  • rules 表單驗證規則
  • prop 表單域 model 字段
  • label 標簽文本

在提交按鈕的時候,執行validate方法即可;實時校驗可在rules中設置校驗項 trigger: 'change'即可

1.el-form 設計

劃分表單到每一個校驗項(輸入框,下拉框的等),可以設計成 3 級表單

獎勵設置 這一個校驗項稍微復雜一點,可以動態綁定 model 和 rules 實現子項的表單校驗

<!-- 一級表單 -->
<el-form class="form" ref="form" :model="form" :rules="form_rules" size="small">
 <el-form-item label="紅包活動標題" prop="name">
 <el-input v-model='form.name' placeholder="請輸入紅包活動標題(活動展示)" />
 </el-form-item>
 <el-form-item :label="`獎勵設置(${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: '請輸入獎勵名稱', trigger: 'change' }]" >
   <el-input v-model="second_form.packet_name" />
  </el-form-item>
  </el-form>
 </el-card>
 </el-form-item>
</el-form>

2.el-form-item 子項校驗

校驗比較簡單,只需要獲取到每一個表單對象,并執行validate即可,二級表單就遍歷拿到二級表單獨享執行同樣的操作

定義 form 數據模型:

form: {
 name: '',
 seconde_form: [
 {
  packet_name: '',
 },
 ],
},

封裝一個 check_form 方法

/**
 * 表單校驗方法
 * @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();
  }
 });
 });
}

點擊按鈕的時候執行 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);
 }
},

到此這篇關于el-form 多層級表單的實現示例的文章就介紹到這了,更多相關el-form 多層級表單內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福贡县| 乐业县| 永丰县| 翁源县| 临颍县| 汤原县| 鄂托克旗| 临泽县| 巫溪县| 灵石县| 祁连县| 沈丘县| 西宁市| 沛县| 镇平县| 综艺| 北辰区| 亳州市| 商丘市| 楚雄市| 平罗县| 秀山| 怀柔区| 威宁| 波密县| 周至县| 元谋县| 远安县| 洞口县| 克山县| 长白| 白水县| 潼南县| 商河县| 孟村| 景德镇市| 垦利县| 瓮安县| 舒城县| 镇巴县| 磐石市|