最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

html

<el-form :model="formObj" :rules="rules" ref="ruleForm">
 <el-form-item :label="'護理記錄項目配置:'" 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="請輸入"
       />
       <!--@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="'選項' + (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="請輸入"
        />
       </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: '請輸入',
          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('請輸入'))
            } else {
              callback()
            }
          },
          trigger: 'blur'
        }]
      }
    }
  },
  beforeCreate() {
    _THAT = this
  },
  created() {
    // 測試數(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: '選項1'
      }, {
        id: 'item_id_1595641858892',
        // 唯一id
        value: '選項2'
      }]
    }]
    this.formObj.formDictExtendDoList = test
  },
  methods: {
    /**
     * 重復性判斷
     **/
    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) + '的字段名稱重復'))
          setTimeout(function() {
            that.formObj.formDictExtendDoList[index].fieldName = ''
          }, 500)
        }
      } else {
        callback()
      }
    },
    forceUpdate() {
      this.$forceUpdate()
    }
  }
}

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

相關文章

  • element-plus+Vue3實現(xiàn)表格數(shù)據(jù)動態(tài)渲染

    element-plus+Vue3實現(xiàn)表格數(shù)據(jù)動態(tài)渲染

    在Vue中,el-table是element-ui提供的強大表格組件,可以用于展示靜態(tài)和動態(tài)表格數(shù)據(jù),本文主要介紹了element-plus+Vue3實現(xiàn)表格數(shù)據(jù)動態(tài)渲染,感興趣的可以了解一下
    2024-03-03
  • 公共Hooks封裝useTableData表格數(shù)據(jù)實例

    公共Hooks封裝useTableData表格數(shù)據(jù)實例

    這篇文章主要為大家介紹了公共Hooks封裝useTableData表格數(shù)據(jù)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 關于Vue中echarts響應式頁面變化resize()的用法介紹

    關于Vue中echarts響應式頁面變化resize()的用法介紹

    Vue項目中開發(fā)數(shù)據(jù)大屏,使用echarts圖表根據(jù)不同尺寸的屏幕進行適配,resize()可以調用echarts中內置的resize函數(shù)進行自適應縮放,本文將給大家詳細介紹resize()的用法,需要的朋友可以參考下
    2023-06-06
  • vue實現(xiàn)移動端觸屏拖拽功能

    vue實現(xiàn)移動端觸屏拖拽功能

    這篇文章主要為大家詳細介紹了vue實現(xiàn)移動端觸屏拖拽功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Vue3+antDesignVue實現(xiàn)表單校驗的方法

    Vue3+antDesignVue實現(xiàn)表單校驗的方法

    這篇文章主要為大家詳細介紹了基于Vue3和antDesignVue實現(xiàn)表單校驗的方法,文中的示例代碼講解詳細,具有一定的參考價值,需要的小伙伴可以了解下
    2024-01-01
  • elementUI Table組件實現(xiàn)表頭吸頂效果(示例代碼)

    elementUI Table組件實現(xiàn)表頭吸頂效果(示例代碼)

    文章介紹了如何在vue2.6+和elementUI環(huán)境下實現(xiàn)el-table組件的表頭吸頂效果,通過添加樣式、注冊指令、引入指令并在父元素中避免使用overflow:hidden,可以實現(xiàn)場景下表頭始終可見,本文通過實例代碼介紹的非常詳細,感興趣的朋友一起看看吧
    2025-01-01
  • vue隱藏路由的實現(xiàn)方法

    vue隱藏路由的實現(xiàn)方法

    這篇文章主要介紹了vue隱藏路由的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • vue3如何實現(xiàn)變量雙向綁定

    vue3如何實現(xiàn)變量雙向綁定

    這篇文章主要介紹了vue3如何實現(xiàn)變量雙向綁定問題,具有很好的參考價值,希望對大家有所幫助,
    2023-11-11
  • vue-cli3.0 axios跨域請求代理配置方式及端口修改

    vue-cli3.0 axios跨域請求代理配置方式及端口修改

    這篇文章主要介紹了vue-cli3.0 axios跨域請求代理配置方式及端口修改,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue循環(huán)遍歷選項賦值到對應控件的實現(xiàn)方法

    Vue循環(huán)遍歷選項賦值到對應控件的實現(xiàn)方法

    這篇文章主要介紹了Vue-循環(huán)遍歷選項賦值到對應控件的實現(xiàn)方法啊,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06

最新評論

胶州市| 北流市| 舒城县| 馆陶县| 玛沁县| 昌都县| 常州市| 庄浪县| 巴楚县| 克东县| 呼和浩特市| 平潭县| 肃北| 酒泉市| 韶山市| 湘潭县| 交口县| 清原| 武冈市| 西青区| 阜康市| 封丘县| 吉林省| 清镇市| 肥东县| 郴州市| 双鸭山市| 石屏县| 淄博市| 武穴市| 巴马| 沁阳市| 额济纳旗| 萨迦县| 贡山| 尼勒克县| 华容县| 双峰县| 阿瓦提县| 屏南县| 兴安盟|