91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

遵化市| 屏东县| 泰兴市| 广州市| 云梦县| 罗定市| 柘城县| 明星| 洮南市| 梁河县| 保德县| 新干县| 云龙县| 赤峰市| 瑞安市| 南陵县| 鹤壁市| 安徽省| 广饶县| 安溪县| 万荣县| 宜良县| 深圳市| 漳浦县| 新巴尔虎右旗| 综艺| 达孜县| 全南县| 广南县| 宜春市| 香河县| 三门峡市| 通辽市| 合江县| 通榆县| 宜良县| 广宗县| 驻马店市| 台江县| 武威市| 肇源县|