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

elementUI動(dòng)態(tài)表單?+?el-select?按要求禁用問題

 更新時(shí)間:2022年10月22日 09:14:32   作者:_早睡身體好  
這篇文章主要介紹了elementUI動(dòng)態(tài)表單?+?el-select?按要求禁用問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

項(xiàng)目通過 vue+elementUI 實(shí)現(xiàn)

近期開發(fā)過程中遇到一個(gè)需求,對(duì)于從事兩年的“小白”來說,確實(shí)費(fèi)了點(diǎn)腦子,才發(fā)現(xiàn),好像是自己一開始想太多了,各種情況設(shè)想了一溜夠,發(fā)現(xiàn)只要反過來想就OK了 ╮(╯▽╰)╭

需求大概是這樣的:

在動(dòng)態(tài)增減的表單項(xiàng)中,有一個(gè)下拉菜單,要求每選擇一項(xiàng),就把選中過的那一個(gè)選項(xiàng)禁用(簡單來說就是,已經(jīng)選過的就不能再選了),且增加的條數(shù)不能超過下拉菜單中的選項(xiàng)數(shù)量

直接上圖吧(label不重要,主要看效果。。。)

演示圖

先實(shí)現(xiàn)最簡單的:限制新增數(shù)量

判斷已新增的數(shù)量是否小于下拉菜單中選項(xiàng)的數(shù)量

如果小于就新增,否則可以提示一些信息(這里就忽略不寫了)

// 新增按鈕綁定的 的方法
addType () {
  if (this.otherForm.other.length < this.typeList.length) {
    this.otherForm.other.push({
      type: '',
      key: Date.now()
    })
  }
}

下拉菜單已選中的選項(xiàng) 禁用

邏輯很簡單,當(dāng)下拉菜單 change 時(shí),先把所有下拉菜單選項(xiàng)的 disabled 賦值為 false(這里用到排他思想,每次change 都先不禁用,選了哪個(gè)禁用哪個(gè)),遍歷存儲(chǔ)表單數(shù)據(jù)的數(shù)組,在下拉菜單的 list 中找到對(duì)應(yīng)的當(dāng)前被選中的項(xiàng),將該項(xiàng)的 disabled 設(shè)為 true(簡單來說就是 現(xiàn)在都有哪項(xiàng)被選擇了 就禁用它 )

changeType (index, Id) {
  this.typeList.forEach(v => {
    v.disabled = false
    for (var i = 0; i < this.otherForm.other.length; i++) {
      if (this.otherForm.other[i].type === v.Id) {
        v.disabled = true
      }
    }
  })
}

移除后要把移除的那條選中項(xiàng)的disabled 設(shè)為false

// 移除按鈕 綁定事件
removeType (item) {
  var index = this.otherForm.other.indexOf(item)
  if (index !== -1) {
    this.otherForm.other.splice(index, 1)
  }
  // 在下拉菜單數(shù)據(jù)中找到移除的那條的選中項(xiàng) 賦值為false
  this.typeList.forEach(v => {
    if (v.Id === item.type && v.disabled) {
      v.disabled = false
    }
  })
}

完整代碼

<template>
  <div>
    <el-form :model="otherForm" ref="otherForm" label-width="100px">
      <el-form-item
        v-for="(other, index) in otherForm.other"
        :label="'類型' + index"
        :key="index"
        :prop="'other.' + index + '.type'">
        <el-select v-model="other.type" placeholder="請(qǐng)選擇" @change="changeType(index, other.type)">
          <el-option
            v-for="item in typeList"
            :key="item.Id"
            :label="item.label"
            :value="item.Id"
            :disabled="item.disabled">
          </el-option>
        </el-select>
        <el-button @click.prevent="removeType(other)">刪除</el-button>
      </el-form-item>
      <el-form-item>
        <el-button @click="addType">新增</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>
<script>
export default {
  data () {
    return {
      otherForm: {
        other: [{
          type: ''
        }]
      },
      typeList: [{
        Id: 1,
        label: '報(bào)名費(fèi)'
      }, {
        Id: 2,
        label: '飯費(fèi)'
      }, {
        Id: 3,
        label: '餐費(fèi)'
      }, {
        Id: 4,
        label: '書本費(fèi)'
      }]
    }
  },
  methods: {
    // 刪除
    removeType (item) {
      var index = this.otherForm.other.indexOf(item)
      if (index !== -1) {
        this.otherForm.other.splice(index, 1)
      }
      this.typeList.forEach(v => {
        if (v.Id === item.type && v.disabled) {
          v.disabled = false
        }
      })
    },
    // 新增
    addType () {
      if (this.otherForm.other.length < this.typeList.length) {
        this.otherForm.other.push({
          type: '',
          key: Date.now()
        })
      }
    },
    changeType (index, Id) {
      this.typeList.forEach(v => {
        v.disabled = false
        for (var i = 0; i < this.otherForm.other.length; i++) {
          if (this.otherForm.other[i].type === v.Id) {
            v.disabled = true
          }
        }
      })
    }
  }
}
</script>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue 理解之白話 getter/setter詳解

    Vue 理解之白話 getter/setter詳解

    這篇文章主要介紹了Vue getter setter,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 使用vue3+ts+setup獲取全局變量getCurrentInstance的方法實(shí)例

    使用vue3+ts+setup獲取全局變量getCurrentInstance的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于使用vue3+ts+setup獲取全局變量getCurrentInstance的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-08-08
  • vue axios攔截器常用之重復(fù)請(qǐng)求取消

    vue axios攔截器常用之重復(fù)請(qǐng)求取消

    我們大家在開發(fā)中,經(jīng)常會(huì)遇到接口重復(fù)請(qǐng)求導(dǎo)致的各種問題,下面這篇文章主要給大家介紹了關(guān)于axios攔截器之重復(fù)請(qǐng)求取消的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 在Vue3項(xiàng)目中使用如何echarts問題

    在Vue3項(xiàng)目中使用如何echarts問題

    這篇文章主要介紹了在Vue3項(xiàng)目中使用如何echarts問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 如何在vite初始化項(xiàng)目中安裝scss以及scss的使用

    如何在vite初始化項(xiàng)目中安裝scss以及scss的使用

    今天想要給vite項(xiàng)目,添加全局的scss變量文件引用,這樣我們?cè)谑褂胹css變量和函數(shù)的時(shí)候就不需要每個(gè)組件都取引用了,下面這篇文章主要給大家介紹了關(guān)于如何在vite初始化項(xiàng)目中安裝scss以及scss使用的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Vue 項(xiàng)目中如何使用fullcalendar 時(shí)間段選擇插件(類似課程表格)

    Vue 項(xiàng)目中如何使用fullcalendar 時(shí)間段選擇插件(類似課程表格)

    最近完成一個(gè)項(xiàng)目,需要選擇一個(gè)會(huì)議室,但是最好能夠通過在圖上顯示出該 會(huì)議室在某某時(shí)間段內(nèi)已經(jīng)被預(yù)定了,初看這個(gè)功能感覺很棘手,仔細(xì)分析下實(shí)現(xiàn)起來還是挺容易的,下面通過示例代碼講解Vue項(xiàng)目中使用fullcalendar時(shí)間段選擇插件,感興趣的朋友一起看看吧
    2024-07-07
  • Vue實(shí)現(xiàn)星空效果

    Vue實(shí)現(xiàn)星空效果

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)星空效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue實(shí)現(xiàn)點(diǎn)擊選中,其他的不選中方法

    vue實(shí)現(xiàn)點(diǎn)擊選中,其他的不選中方法

    今天小編就為大家分享一篇vue實(shí)現(xiàn)點(diǎn)擊選中,其他的不選中方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue3?圖片懶加載的兩種方式、IntersectionObserver和useIntersectionObserver實(shí)例詳解

    vue3?圖片懶加載的兩種方式、IntersectionObserver和useIntersectionObserve

    這篇文章主要介紹了vue3?圖片懶加載的兩種方式、IntersectionObserver和useIntersectionObserver實(shí)例詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • Vue 可拖拽組件Vue Smooth DnD的使用詳解

    Vue 可拖拽組件Vue Smooth DnD的使用詳解

    最近需要有個(gè)拖拽列表的需求,發(fā)現(xiàn)一個(gè)簡單好用的 Vue 可拖拽組件,本文主要介紹了可拖拽組件Vue Smooth DnD的使用,感興趣的可以了解一下
    2021-07-07

最新評(píng)論

克东县| 曲周县| 密山市| 右玉县| 罗甸县| 武定县| 建宁县| 竹山县| 安多县| 灯塔市| 时尚| 炎陵县| 澜沧| 林州市| 边坝县| 枣强县| 星子县| 枝江市| 绥阳县| 德江县| 凤山县| 韶关市| 万年县| 屏南县| 龙井市| 兰州市| 盐源县| 镇赉县| 双牌县| 乡宁县| 洛川县| 乐陵市| 横山县| 昌图县| 平南县| 长乐市| 运城市| 乐山市| 朔州市| 望江县| 华阴市|