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

antd?select?多選限制個數(shù)的實現(xiàn)代碼

 更新時間:2022年11月09日 11:30:47   作者:一晌貪歡i  
這篇文章主要介紹了antd?select?多選限制個數(shù),實現(xiàn)思路和核心代碼都很簡單,其中核心代碼在于disabled,代碼簡單易懂需要的朋友可以參考下

antd select 多選限制個數(shù)

直接給出源碼

<template>
       <a-select
              v-model="college"
              mode="multiple"
              :maxTagCount="2"
              autocomplete="off"
              style="width: 252px;margin-top:10px;margin-right: 28px"
              :getPopupContainer="triggerNode => triggerNode.parentNode"
            >
              <a-select-option
                v-for="item in collegeList"
                :key="item.id"
                :value="item.name"
                :disabled="college.length >= 5 && college.findIndex(o => o === item.name) === -1"
              >
                {{ item.name }}
              </a-select-option>
          </a-select>
</template>
 <script>  
	 data() {
	    return { 
	      collegeList: [],
	      college: []
	    }
	  },
 </script>  

其中核心代碼在于disabled
其中 collegeList數(shù)據(jù)結構

[
  {
    "city": "北京市",
    "code": "4111010001",
    "createBy": null,
    "createTime": null,
    "department": "教育部",
    "id": 1,
    "level": "本科",
    "name": "北京大學",
    "updateBy": null,
    "updateTime": null
  },
  {
    "city": "北京市",
    "code": "4111010002",
    "createBy": null,
    "createTime": null,
    "department": "教育部",
    "id": 2,
    "level": "本科",
    "name": "中國人民大學",
    "updateBy": null,
    "updateTime": null
  },
  {
    "city": "北京市",
    "code": "4111010003",
    "createBy": null,
    "createTime": null,
    "department": "教育部",
    "id": 3,
    "level": "本科",
    "name": "清華大學",
    "updateBy": null,
    "updateTime": null
  }
]

再看一個復雜一點的例子:

		<a-select
              v-model="safeGroup"
              mode="multiple"
              placeholder="請選擇安全組"
              class="long-input"
              :getPopupContainer="triggerNode => triggerNode.parentNode"
              @change="handleSafeChange"
            >
              <a-select-option
                v-for="item in SafeGroupList"
                :key="item.safeGroupId"
                :value="JSON.stringify(item)"
                :disabled="
                  safeGroup.length >= 5 &&
                  safeGroup.findIndex(o => JSON.parse(o).safeGroupId === item.safeGroupId) === -1
                "
              >
                <ellipsis :length="20"> {{ item.safeGroupName }}</ellipsis>
              </a-select-option>
             
            </a-select>

其中對v-model綁定的數(shù)據(jù)處理在@chang方法里

handleSafeChange(e) {
    if (e) {
      this.dispalySafe = false
      this.safeGroup = e
      const arr1 = e.map(x => {
        return JSON.parse(x)
      })
      const arr2 = e.map(x => {
        return JSON.parse(x).safeGroupId
      })
      this.$emit('handleSafeChange', arr2, arr1)
    }
  },

關于antd Select 限制選擇個數(shù)的解決方案

應用場景描述:

Select 被form 所包裹,且被getFieldDecorator修飾。所以值的改變應該通過form的setFieldsValue方法。

Select模式肯定會是multiple。且以最多三個值舉例。

解決思路如下:

1 起初是想在Select的onchange事件中判斷values的數(shù)量,數(shù)量大于三個的時候來重新setFieldsValue;且把最后的選項值替換成剛剛選擇的值。

后來發(fā)現(xiàn)setFieldsValue方法不起作用,Select的值會一直增加。后來想想可能是 setFieldsValue與onchange 沖突,通過setFieldsValue 無法改變onchange后的值。

2 最后通過重新查看文檔。發(fā)現(xiàn)還有一個方法可用,即 validator。驗證值,通過驗證所選值的數(shù)量是否大于三個,然后重新setFieldsValue ;發(fā)現(xiàn)此法可行。從而解決該疑難雜癥。

好,最后附上代碼供參考:

changeValues = (rule ,value , callback)=> {

const { setFieldsValue } = this.props.form ;

let newArr ;

if (value.length > 3){

newArr = [].concat(value.slice(0,2), value.slice(-1) ) ;

setFieldsValue({

"languages" : newArr ,

})

callback(‘最多選擇三種語言‘)

} else {

newArr = value ;

callback()

}

}

{getFieldDecorator(‘languages‘, {

rules:[{required: true,message : ‘請選擇三種語言‘,

validator : changeValues

}],

validateTrigger : ‘onChange‘,

})(

1

2

3

4

5

)}

到此這篇關于antd select 多選限制個數(shù)的文章就介紹到這了,更多相關antd select 限制個數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue3中使用百度地圖的簡單步驟

    vue3中使用百度地圖的簡單步驟

    最近項目要用到百度地圖api,好久沒用到地圖,就百度了一番,下面這篇文章主要給大家介紹了關于vue3中使用百度地圖的簡單步驟,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • vue2和vue3部署到服務器子目錄為空白頁問題及解決

    vue2和vue3部署到服務器子目錄為空白頁問題及解決

    這篇文章主要介紹了vue2和vue3部署到服務器子目錄為空白頁問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • vue 1.x 交互實現(xiàn)仿百度下拉列表示例

    vue 1.x 交互實現(xiàn)仿百度下拉列表示例

    本篇文章主要介紹了vue 1.x 交互實現(xiàn)仿百度下拉列表示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • vue使用數(shù)組splice方法失效,且總刪除最后一項的問題及解決

    vue使用數(shù)組splice方法失效,且總刪除最后一項的問題及解決

    這篇文章主要介紹了vue使用數(shù)組splice方法失效,且總刪除最后一項的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue前端獲取本地IP地址代碼實例

    vue前端獲取本地IP地址代碼實例

    再做前端頁面的時候,想獲取本地的ip地址,可能是為了和服務器通信,可能是為了展示,無論哪種,下面給大家總結下方法,這篇文章主要給大家介紹了關于vue前端獲取本地IP地址的相關資料,需要的朋友可以參考下
    2024-05-05
  • Nginx同一端口部署多個前后端分離的vue項目完整步驟

    Nginx同一端口部署多個前后端分離的vue項目完整步驟

    最近做項目結構優(yōu)化,前端項目都是部署在nginx上,想實現(xiàn)同一個端口可以訪問多個前端項目,所以就有了本文,這篇文章主要給大家介紹了關于Nginx同一端口部署多個前后端分離的vue項目的相關資料,需要的朋友可以參考下
    2023-10-10
  • vue.js數(shù)據(jù)綁定的方法(單向、雙向和一次性綁定)

    vue.js數(shù)據(jù)綁定的方法(單向、雙向和一次性綁定)

    本篇文章主要介紹了vue.js數(shù)據(jù)綁定的方法(單向、雙向和一次性綁定),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Vue-CLI 項目在pycharm中配置方法

    Vue-CLI 項目在pycharm中配置方法

    這篇文章主要介紹了Vue-CLI 項目在pycharm中配置方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Vue調(diào)用PC攝像頭實現(xiàn)拍照功能

    Vue調(diào)用PC攝像頭實現(xiàn)拍照功能

    這篇文章主要為大家詳細介紹了Vue調(diào)用PC攝像頭實現(xiàn)拍照功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue實現(xiàn)半自動打字機特效

    Vue實現(xiàn)半自動打字機特效

    本文主要介紹了Vue實現(xiàn)半自動打字機特效,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-12-12

最新評論