欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue + el-form 實(shí)現(xiàn)的多層循環(huán)表單驗(yàn)證

 更新時(shí)間:2020年11月25日 10:37:25   作者:xiaoweiba  
這篇文章主要介紹了vue + el-form 實(shí)現(xiàn)的多層循環(huán)表單驗(yàn)證,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下。

html

<el-form :model="formObj" :rules="rules" ref="ruleForm">
 <el-form-item :label="'護(hù)理記錄項(xiàng)目配置:'" label-width="180px">
  <template v-for="(formItem, index) in formObj.formDictExtendDoList">
   <div class="hljl-container" :key="formItem.id">
    <el-row>
     <el-col :span="8">
      <el-form-item
       :label="'字段名稱:'"
       label-width="90px"
       :rules="rules.fieldName"
       :prop="'formDictExtendDoList.'+index+'.fieldName'"
      >
       <el-input
        v-model.trim="formItem.fieldName"
        type="text"
        :clearable="true"
        maxLength="100"
        placeholder="請(qǐng)輸入"
       />
       <!--@blur="isRepeat(formItem, index, 'fieldName')"-->
      </el-form-item>
     </el-col>
     <template
      v-for="(child, index1) in formItem.item"
      v-show="formItem.type === 2"
     >
      <el-col :span="8" :key="child.id">
       <el-form-item
        :label="'選項(xiàng)' + (index1+1) + ':'"
        label-width="90px"
        :rules="rules.value"
        :prop="'formDictExtendDoList.'+index+'.item.'+index1+'.value'"
       >
        <el-input
         v-model.trim="child.value"
         @input="forceUpdate"
         :clearable="true"
         type="text"
         maxlength="20"
         placeholder="請(qǐng)輸入"
        />
       </el-form-item>
      </el-col>
     </template>
    </el-row>
   </div>
  </template>
 </el-form-item>
</el-form>

js

let _THAT
export
default {
  name: 'formMangeAdd',
  data() {
    return {
      formObj: {
        formDictExtendDoList: []
      },
      rules: {
        fieldName: [{
          required: true,
          message: '請(qǐng)輸入',
          trigger: 'blur'
        }, {
          validator: this.itemValidator,
          trigger: 'blur'
        }],
        value: [{
          validator: (rule, value, callback) = > {
            // I'm a genius.
            let that = _THAT
            that.forceUpdate()
            let field = rule.field
            let arr = field.split('.')
            let index = +arr[1]
            let index1 = +arr[3]
            let _value = that.formObj.formDictExtendDoList[index].item[index1].value
            if (_value === '' || _value === null || _value === undefined) {
              callback(new Error('請(qǐng)輸入'))
            } else {
              callback()
            }
          },
          trigger: 'blur'
        }]
      }
    }
  },
  beforeCreate() {
    _THAT = this
  },
  created() {
    // 測(cè)試數(shù)據(jù)
    let test = [{
      id: 'id_1595641858891',
      // 唯一配置id
      fieldName: '字段名稱',
      // 字段名稱
      item: []
    }, {
      id: 'id_1595641858892',
      // 唯一配置id
      fieldName: '字段名稱',
      // 字段名稱
      item: []
    }, {
      id: 'id_1595641858893',
      // 唯一配置id
      fieldName: '字段名稱',
      // 字段名稱
      item: [{
        id: 'item_id_1595641858891',
        // 唯一id
        value: '選項(xiàng)1'
      }, {
        id: 'item_id_1595641858892',
        // 唯一id
        value: '選項(xiàng)2'
      }]
    }]
    this.formObj.formDictExtendDoList = test
  },
  methods: {
    /**
     * 重復(fù)性判斷
     **/
    itemValidator: (rule, value, callback) = > {
      let that = _THAT
      that.forceUpdate()
      let field = rule.field
      let ruleArr = field.split('.')
      let index = +ruleArr[1]
      let type = ruleArr[2]
      if (value === '') {
        callback()
        return false
      }
      let arr = []
      for (let i = 0; i < that.formObj.formDictExtendDoList.length; i++) {
        let formDictExtendDoListItem = that.formObj.formDictExtendDoList[i]
        let formDictExtendDoListFieldName = formDictExtendDoListItem.fieldName
        let formDictExtendDoListProjectName = formDictExtendDoListItem.projectName
        if (index !== i) {
          if (type === 'fieldName') {
            if (formDictExtendDoListFieldName !== '') {
              if (formDictExtendDoListFieldName === value) {
                arr.push(i)
              }
            }
          }
        }
      }
      if (arr.length !== 0) {
        if (type === 'fieldName') {
          callback(new Error('與配置' + (+arr[0] + 1) + '的字段名稱重復(fù)'))
          setTimeout(function() {
            that.formObj.formDictExtendDoList[index].fieldName = ''
          }, 500)
        }
      } else {
        callback()
      }
    },
    forceUpdate() {
      this.$forceUpdate()
    }
  }
}

以上就是vue + el-form 實(shí)現(xiàn)的多層循環(huán)表單驗(yàn)證的詳細(xì)內(nèi)容,更多關(guān)于vue 表單驗(yàn)證的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue實(shí)現(xiàn)實(shí)時(shí)刷新時(shí)間的功能

    Vue實(shí)現(xiàn)實(shí)時(shí)刷新時(shí)間的功能

    這篇文章主要為大家詳細(xì)介紹了如何Vue利用實(shí)現(xiàn)實(shí)時(shí)刷新時(shí)間的功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解下
    2023-12-12
  • vue使用Font Awesome的方法步驟

    vue使用Font Awesome的方法步驟

    這篇文章主要介紹了vue使用Font Awesome的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • 利用Vue.js指令實(shí)現(xiàn)全選功能

    利用Vue.js指令實(shí)現(xiàn)全選功能

    最近做了兩個(gè)vue的項(xiàng)目,都需要實(shí)現(xiàn)全選反選的功能,兩個(gè)項(xiàng)目用了兩種實(shí)現(xiàn)方法,第一個(gè)項(xiàng)目用vue的computed,第二個(gè)項(xiàng)目用指令來實(shí)現(xiàn),用起來,發(fā)覺指令更加方便。下面就來介紹如何利用指令來實(shí)現(xiàn)全選。
    2016-09-09
  • 總結(jié)vue映射的方法與混入的使用過程

    總結(jié)vue映射的方法與混入的使用過程

    這篇文章主要介紹了總結(jié)vue映射的方法與混入的使用過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue使用moment將GMT時(shí)間轉(zhuǎn)換為北京時(shí)間

    Vue使用moment將GMT時(shí)間轉(zhuǎn)換為北京時(shí)間

    GMT(Greenwich Mean Time)和UTC(Coordinated Universal Time)是兩個(gè)時(shí)間標(biāo)準(zhǔn),它們?cè)谠S多方面非常相似,但也有一些微小的差異,本文給大家詳細(xì)介紹了Vue使用moment將GMT時(shí)間轉(zhuǎn)換為北京時(shí)間,需要的朋友可以參考下
    2023-12-12
  • 基于Vue實(shí)現(xiàn)拖拽效果

    基于Vue實(shí)現(xiàn)拖拽效果

    這篇文章主要介紹了基于Vue實(shí)現(xiàn)拖拽效果,文中給大家介紹了clientY pageY screenY layerY offsetY的區(qū)別講解,需要的朋友可以參考下
    2018-04-04
  • vue+echarts圖表使用的問題記錄

    vue+echarts圖表使用的問題記錄

    由于在項(xiàng)目中需要對(duì)數(shù)據(jù)進(jìn)行可視化處理,也就是用圖表展示,眾所周知echarts是非常強(qiáng)大的插件,所以這篇文章主要給大家介紹了關(guān)于vue+echarts圖表使用的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • vue 使用ref 讓父組件調(diào)用子組件的方法

    vue 使用ref 讓父組件調(diào)用子組件的方法

    這篇文章主要介紹了vue 使用ref 讓父組件調(diào)用子組件的方法,需要的朋友可以參考下
    2018-02-02
  • vue 將多個(gè)過濾器封裝到一個(gè)文件中的代碼詳解

    vue 將多個(gè)過濾器封裝到一個(gè)文件中的代碼詳解

    這篇文章主要介紹了vue 將多個(gè)過濾器封裝到一個(gè)文件中實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-09-09
  • vue3 可拖動(dòng)的左右面板分割組件實(shí)現(xiàn)

    vue3 可拖動(dòng)的左右面板分割組件實(shí)現(xiàn)

    最近在使用vue的時(shí)候,遇到一個(gè)需求,實(shí)現(xiàn)左右div可通過中間部分拖拽調(diào)整寬度,本文就整理一下,分享給大家,有興趣的可以學(xué)習(xí)
    2021-06-06

最新評(píng)論