国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue + Element ui 實現(xiàn)動態(tài)表單,包括新增行/刪除行/動態(tài)表單驗證/提交功能

這篇具有很好參考價值的文章主要介紹了Vue + Element ui 實現(xiàn)動態(tài)表單,包括新增行/刪除行/動態(tài)表單驗證/提交功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

原創(chuàng)/朱季謙

最近通過Vue + Element ui實現(xiàn)了動態(tài)表單功能,該功能還包括了動態(tài)表單新增行、刪除行、動態(tài)表單驗證、動態(tài)表單提交功能,趁熱打鐵,將開發(fā)心得記錄下來,方便以后再遇到類似功能時,直接拿來應(yīng)用。

簡化的頁面效果圖如下:

element ui動態(tài)表單,前端,vue.js,ui,elementui

最開始,我是用了純粹的表格形式,后來發(fā)現(xiàn),這種形式在提交的時候,不好對每個輸入框做校驗,若是表單形式話,就可以直接通過rule設(shè)置每個輸入框的驗證,因此,我就在表格里面嵌套了表單。注意一點是,el-form-item里的 :prop="scope.$index + '.name'"需要對應(yīng)el-input的 v-model="studentData[scope.$index].name",兩者都是同一個字段值。

<template>
  <div >
        <div>
          <div>
            <el-button  size="small"  @click="addRow">新增</el-button>
          </div>
          <!--設(shè)置的表單-->
          <el-form :model="studentData" ref="data" label-width="auto">
          <el-table
            border
            :header-cell-style="{ 'text-align': 'center' }"
            :cell-style="{ 'text-align': 'center' }"
            :data="studentData"
            ref="table"
            style="width: 100%"
          >

            <el-table-column align="center"   label="姓名">
              <template slot-scope="scope">
              <!--表格里面嵌套表單-->
                <el-form-item
                  :prop="scope.$index + '.name'"
                  :rules="{ required: true, message: '姓名不能為空', trigger: 'blur' }"
                >
                <el-input
                  v-model="studentData[scope.$index].name"
                  autocomplete="off"
                  size="small"
                  placeholder="姓名"
                ></el-input>
                </el-form-item>
              </template>
            </el-table-column>

            <el-table-column align="center"  label="年齡">
              <template slot-scope="scope">
                  <el-form-item
                    :prop="scope.$index + '.age'"
                    :rules="{ required: true, message: '年齡不能為空', trigger: 'blur' }"
                  >
                <el-input
                  v-model="studentData[scope.$index].age"
                  autocomplete="off"
                  size="small"
                  type='number'
                  placeholder="收款方開戶行號"
                ></el-input>
                  </el-form-item>
              </template>
            </el-table-column>

            <el-table-column align="center"  label="性別">
              <template slot-scope="scope">
                <el-form-item
                  :prop="scope.$index + '.sex'"
                  :rules="{ required: true, message: '性別不能為空', trigger: 'blur' }"
                >
                <el-input
                  v-model="studentData[scope.$index].sex"
                  autocomplete="off"
                  size="small"
                  placeholder="性別"
                ></el-input>
                </el-form-item>
              </template>
            </el-table-column>

            <el-table-column fixed="right" label="操作" width="100">
              <template slot-scope="scope">
                <el-button
                  @click="handleDeleteRow(studentData[scope.$index])"
                  type="text"
                  size="small"
                >刪除</el-button
                >
              </template>
            </el-table-column>
            
          </el-table>
          </el-form>
        </div>
        
        <div slot="footer" class="dialog-footer" style="margin-bottom: 10px">
          <el-button size="mini"  @click="submit">提交</el-button>
          <el-button size="mini" @click="resetForm()">重置</el-button>
        </div>
  </div>
</template>

定義一個存儲動態(tài)表格數(shù)據(jù)的數(shù)組變量

export default {
  data() {
    return {
      studentData:[],
    };
  },
  ......
}

在methods方法里增加相關(guān)方法,分別是新增行、刪除行、提交——

methods:{

  /**
   * 新增行
   */
  addRow() {
    let index = this.studentData.length ;
    this.studentData.push({
      key: index,
      name:'',
      age:'',
      sex:'',
    });
  },

  /**
   * 刪除行
   * @param row
   */
  handleDeleteRow(row){
    let datas = this.studentData;
    for (var i = 0; i < datas.length; i++){
      if (datas[i].key == row.key){
        datas.splice(i,1);
      }
    }
  },

  /**
   * 提交
   */
  submit() {
    this.$refs["data"].validate(valid => {
      //valid為true,表示表單都已經(jīng)驗證通過,若為false,說明存在表單驗證失敗
        if (valid) {
          save(this.studentData).then(response => {
            this.$message({
              message: '提交成功',
              type: 'success'
            });
          });
        }
    });
  },

  /**
   * 重置
   */
  resetForm() {
    let datas = this.studentData;
    for (var i = 0; i < datas.length; i++){
      datas[i].name='';
      datas[i].age='';
      datas[i].sex='';
    }
  },
}

設(shè)置表單驗證規(guī)則,可統(tǒng)一在rules設(shè)置,也可以在每一輸入框單獨設(shè)置,我這里是單獨在每一個輸入框里設(shè)置,即:rules="{ required: true, message: '姓名不能為空', trigger: 'blur' }"就可以了,當(dāng)然,還可以做一些更復(fù)雜的自定義規(guī)則。

<el-table-column align="center"   label="姓名">
          <template slot-scope="scope">
          <!--表格里面嵌套表單-->
            <el-form-item
              :prop="scope.$index + '.name'"
              :rules="{ required: true, message: '姓名不能為空', trigger: 'blur' }"
            >
            <el-input
              v-model="studentData[scope.$index].name"
              autocomplete="off"
              size="small"
              placeholder="姓名"
            ></el-input>
            </el-form-item>
          </template>
        </el-table-column>

完成以上步驟,就可以快速寫出一個基于Vue + Element ui 實現(xiàn)動態(tài)表單,包括新增行/刪除行/動態(tài)表單驗證/提交功能的邏輯。文章來源地址http://www.zghlxwxcb.cn/news/detail-759332.html

到了這里,關(guān)于Vue + Element ui 實現(xiàn)動態(tài)表單,包括新增行/刪除行/動態(tài)表單驗證/提交功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Vue3+Element-Plus 實現(xiàn)用戶列表頁面的UI結(jié)構(gòu)及動態(tài)加載表單功能 三一

    Vue3+Element-Plus 實現(xiàn)用戶列表頁面的UI結(jié)構(gòu)及動態(tài)加載表單功能 三一

    1.1 頭部是一個面包屑?(Breadcrumb)導(dǎo)航區(qū)域 1.2 白色區(qū)域是一個卡片(Card)視圖 1.3 卡片 (Card)視圖中嵌套了 ? 輸入框(Input )、 按鈕(Button)、 表單(Form)、分頁(Pagination ) Breadcrumb 面包屑 | Element Plus (gitee.io) https://element-plus.gitee.io/zh-CN/component/breadcrumb.html ?2.1.1 復(fù)制

    2023年04月09日
    瀏覽(32)
  • vue+element ui----table編輯當(dāng)前行、刪除當(dāng)前行、新增、合計操作

    vue+element ui----table編輯當(dāng)前行、刪除當(dāng)前行、新增、合計操作

    2024年02月11日
    瀏覽(32)
  • vue+element UI動態(tài)增減表單

    vue+element UI動態(tài)增減表單

    ? ? 寫在前面: 因為最近有個需求,需要新增聯(lián)系人,而聯(lián)系人數(shù)量并不確定,需要根據(jù)需要添加表單,一個聯(lián)系人對應(yīng)一個表單。 ? ?效果是這樣的: ? ? 思路: ①寫個div,把表單放在里面,旁邊放2個按鈕,添加和刪除,且只有1個元素的時候不能顯示刪除按鈕 ? ? ? ?

    2024年02月11日
    瀏覽(28)
  • vue的element ui使用el-table組件實現(xiàn)懶加載樹、默認自動展開層級(一層,二層)、并且解決新增、刪除、修改之后樹節(jié)點不刷新問題

    vue的element ui使用el-table組件實現(xiàn)懶加載樹、默認自動展開層級(一層,二層)、并且解決新增、刪除、修改之后樹節(jié)點不刷新問題

    問題 :數(shù)據(jù)量太大了,導(dǎo)致接口返回數(shù)據(jù)時間較長。 解決 : 將ElementUi中Table組件加載改為懶加載(查看文檔)。 思路 :初始化打開頁面時只顯示第一級菜單,用戶點擊展開菜單之后往后端發(fā)送請求,然后加載出一級子菜單;后臺只用有一個根據(jù)菜單id查詢他子菜單的接口就可以

    2024年01月16日
    瀏覽(28)
  • 【Vue-Element UI】三級表單可選框以及顯示、修改和刪除表單屬性

    【Vue-Element UI】三級表單可選框以及顯示、修改和刪除表單屬性

    目錄 三級表單可選框 靜態(tài)界面 收集數(shù)據(jù)? 獲取數(shù)據(jù) 屬性值內(nèi)容顯示? 一些知識點 (1)Vue.nextTick() (2)$set (3)?ref (4)一些數(shù)組方法 (5)深拷貝 (6)@blur 效果: 這里是后臺管理系統(tǒng)的三級選擇器, 只有當(dāng)?shù)谝患壏诸愡x中屬性時,第二個才能選,以此類推 。 Element?

    2023年04月08日
    瀏覽(18)
  • vue:element-ui表單動態(tài)驗證規(guī)則

    vue:element-ui表單動態(tài)驗證規(guī)則

    實現(xiàn)當(dāng)是否發(fā)送消息選擇是時,業(yè)務(wù)類型字段必填。 當(dāng)你在一個表單中使用 el-form 和 el-form-item 來創(chuàng)建表單項時, el-form-item 的 :rules 屬性可以用來設(shè)置該表單項的驗證規(guī)則。我們希望根據(jù)用戶在 \\\"是否發(fā)送消息\\\" 這個表單項中的選擇動態(tài)設(shè)置 \\\"業(yè)務(wù)類型\\\" 這個表單項的驗證規(guī)則

    2024年01月23日
    瀏覽(30)
  • Vue+element-ui的el-cascader實現(xiàn)動態(tài)添加刪除級聯(lián)地點輸入框

    實現(xiàn)省市區(qū)三級地點級聯(lián)選擇,可聯(lián)想; 包括始發(fā)地點、途徑地點、終止地點,始發(fā)地點、終止地點均為一個,途徑地點可以沒有也可以是多個; 用戶可以動態(tài)添加/刪除途徑地點。 使用級聯(lián)選擇器Cascader需要的樹形數(shù)據(jù),前端請求到后端獲取省市區(qū)數(shù)據(jù)并處理為elementui官網(wǎng)

    2024年02月04日
    瀏覽(24)
  • el-form 動態(tài)表單增減項 (vue+element ui)

    el-form 動態(tài)表單增減項 (vue+element ui)

    1、點擊”+“,彈出彈窗,新增一項,點擊”-“,刪除當(dāng)前項 代碼展示: html代碼: 注意: el-form-item(表單項)循環(huán),綁定的數(shù)組寫在form當(dāng)中 表單: 新增參數(shù)彈框: data: methods: 1、點擊新增,彈出新增彈窗,添加表單項 2、點擊”-“,刪除當(dāng)前表單項

    2024年02月02日
    瀏覽(27)
  • Vue+Element-UI el-form表單動態(tài)檢驗

    Vue+Element-UI el-form表單動態(tài)檢驗

    業(yè)務(wù)需求: 表單el-form 有一表單項:發(fā)布時間 ,有5個選項:今天、24小時、近3天、近7天和自定義時間,其中當(dāng)選擇自定義時間時,后面跟著的日期時間選擇器是必填的,選中其他選項時則不需要。這就需要做到表單的動態(tài)檢驗。 最開始實現(xiàn)方式是在當(dāng)前表單項中設(shè)置規(guī)則

    2024年02月11日
    瀏覽(26)
  • html中使用Vue+element UI動態(tài)創(chuàng)建表單數(shù)據(jù)不顯示問題

    html中使用Vue+element UI動態(tài)創(chuàng)建表單數(shù)據(jù)不顯示問題

    直接上代碼:html代碼如下 我這里后臺數(shù)據(jù)是模擬的,返回的數(shù)據(jù)格式: ?理想的是頁面創(chuàng)建時就向后臺獲取數(shù)據(jù),然后將數(shù)據(jù)渲染在頁面上,可是失敗了,但是控制臺也沒有報錯,只有單獨綁定數(shù)據(jù)的ReportTitle渲染成功。 ? ? ?最后問了大佬才發(fā)現(xiàn),因為我用的是Vue2,必須

    2024年02月15日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包