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

elementUI下拉框?qū)崿F(xiàn)隱藏時(shí)觸發(fā)相關(guān)事件方式

 更新時(shí)間:2023年10月25日 09:03:41   作者:跳跳的小古風(fēng)  
這篇文章主要介紹了elementUI下拉框?qū)崿F(xiàn)隱藏時(shí)觸發(fā)相關(guān)事件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

elementUI下拉框隱藏時(shí)觸發(fā)相關(guān)事件

el-select 下拉框隱藏時(shí)觸發(fā)相關(guān)事件 =>@visible-change

設(shè)置額外的class,=> popper-class

	@visible-change="changeValue1($event)"

	changeValue1: function(callback, vc) {
				//只有回調(diào)參數(shù)為true時(shí)才觸發(fā) ctx.getAreaListDataSearch(vc,1)這個(gè)函數(shù);
				if (callback === true) {
					document.getElementsByClassName("quhua")[0].style.zIndex = "-1";
				} else {
					document.getElementsByClassName("quhua")[0].style.zIndex = "1200";
				}
			},

頁面滾動(dòng)時(shí)隱藏element-ui下拉框/時(shí)間彈框

場(chǎng)景

在系統(tǒng)中,當(dāng)(有垂直滾動(dòng)時(shí))點(diǎn)擊下拉框后滾動(dòng)頁面,會(huì)發(fā)現(xiàn)下拉項(xiàng)會(huì)遮蓋住頁面中的元素,不會(huì)隱藏

解決:(以vue為例)

在頁面滾動(dòng)或者縮放時(shí)隱藏下拉項(xiàng)即可(借助點(diǎn)擊目標(biāo)元素,下拉項(xiàng)會(huì)自動(dòng)隱藏的特點(diǎn))

案例代碼:

<template>
  <div class="wrapper">
    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
      <el-form-item label="活動(dòng)名稱" prop="name">
        <el-input v-model="ruleForm.name"></el-input>
      </el-form-item>
      <el-form-item label="活動(dòng)區(qū)域" prop="region">
        <el-select v-model="ruleForm.region" placeholder="請(qǐng)選擇活動(dòng)區(qū)域">
          <el-option label="區(qū)域一" value="shanghai"></el-option>
          <el-option label="區(qū)域二" value="beijing"></el-option>
        </el-select>
      </el-form-item>
      
      <el-form-item label="即時(shí)配送" prop="delivery">
        <el-switch v-model="ruleForm.delivery"></el-switch>
      </el-form-item>
      <el-select v-model="value" placeholder="請(qǐng)選擇">
        <el-option
          v-for="item in options"
          :key="item.value"
          :label="item.label"
          :value="item.value">
        </el-option>
      </el-select>
      <el-form-item label="活動(dòng)性質(zhì)" prop="type">
        <el-checkbox-group v-model="ruleForm.type">
          <el-checkbox label="美食/餐廳線上活動(dòng)" name="type"></el-checkbox>
          <el-checkbox label="地推活動(dòng)" name="type"></el-checkbox>
          <el-checkbox label="線下主題活動(dòng)" name="type"></el-checkbox>
          <el-checkbox label="單純品牌曝光" name="type"></el-checkbox>
        </el-checkbox-group>
      </el-form-item>
      <el-select v-model="value2" placeholder="請(qǐng)選擇">
        <el-option
          v-for="item in options"
          :key="item.value"
          :label="item.label"
          :value="item.value">
        </el-option>
      </el-select>
      <el-form-item label="特殊資源" prop="resource">
        <el-radio-group v-model="ruleForm.resource">
          <el-radio label="線上品牌商贊助"></el-radio>
          <el-radio label="線下場(chǎng)地免費(fèi)"></el-radio>
        </el-radio-group>
      </el-form-item>
      <el-select v-model="value3" placeholder="請(qǐng)選擇">
        <el-option
          v-for="item in options"
          :key="item.value"
          :label="item.label"
          :value="item.value">
        </el-option>
      </el-select>
      <el-form-item label="活動(dòng)形式" prop="desc">
        <el-input type="textarea" v-model="ruleForm.desc"></el-input>
      </el-form-item>
      <el-select v-model="value4" placeholder="請(qǐng)選擇">
        <el-option
          v-for="item in options"
          :key="item.value"
          :label="item.label"
          :value="item.value">
        </el-option>
      </el-select>
      <el-form-item>
        <el-button type="primary" @click="submitForm('ruleForm')">立即創(chuàng)建</el-button>
        <el-button @click="resetForm('ruleForm')">重置</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        ruleForm: {
          name: '',
          region: '',
          date1: '',
          date2: '',
          delivery: false,
          type: [],
          resource: '',
          desc: ''
        },
        options: [{
          value: '選項(xiàng)1',
          label: '黃金糕'
        }, {
          value: '選項(xiàng)2',
          label: '雙皮奶'
        }, {
          value: '選項(xiàng)3',
          label: '蚵仔煎'
        }, {
          value: '選項(xiàng)4',
          label: '龍須面'
        }, {
          value: '選項(xiàng)5',
          label: '北京烤鴨'
        }],
        value: '',
        value1: '',
        value2: '',
        value3: '',
        value4: '',
        rules: {
        },
        mouseUp: null,
        mouseDown: null
      };
    },
    mounted() {
      this.$nextTick(() => {
        let scrollDom = document.querySelectorAll('.wrapper')[0];
        // 滾動(dòng)監(jiān)聽的容器是scrollDom或者window下,在哪個(gè)下監(jiān)聽哪個(gè)
        window.addEventListener('scroll', () => {
          this.scrollHide('.el-select-dropdown');
        }, false);
      })
    },
    methods: {
      // 隱藏popper
      hidePopper(cls = '.el-popper') {
        const dom = document.querySelector(cls);
        console.log(cls, dom, 9999999);
        if( !dom ){ return; }
        // 創(chuàng)建鼠標(biāo)事件
        if (!this.mouseUp || !this.mouseDown) {
          console.log('-----create events-----');
          this.mouseUp = new MouseEvent('mouseup', { 'view': window, 'bubbles': true, 'cancelable': true });
          this.mouseDown = new MouseEvent('mousedown', { 'view': window, 'bubbles': true, 'cancelable': true });
        }
        // 順序觸發(fā)mouseDown、mouseUp
        dom.dispatchEvent(this.mouseDown);
        dom.dispatchEvent(this.mouseUp);
      },
      // 清除鼠標(biāo)事件
      delEvents() {
        console.log('-----delete events-----');
        this.mouseUp = null;
        this.mouseDown = null;
      },
      /**
      * 滾動(dòng)時(shí)隱藏
      * @param cls 隱藏的元素class:如下拉、時(shí)間彈框等
      */
      scrollHide(cls) {
        if( this.mouseUp || this.mouseDown ) { this.delEvents(); } // 先移除
        this.hidePopper(cls);
      },
 
 
      submitForm(formName) {
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      }
    }
  }
</script>
 
<style lang="less">
.wrapper {
  width: 100%;
  height: 2000px;
}
</style>

主要邏輯代碼:

1、監(jiān)聽當(dāng)前滾動(dòng)元素的scroll事件

// window或當(dāng)前滾動(dòng)元素的dom節(jié)點(diǎn)  
// 滾動(dòng)監(jiān)聽的容器 滾動(dòng)容器是哪個(gè)就監(jiān)聽哪個(gè)
// let scrollDom = document.querySelectorAll('.wrapper')[0];
// scrollDom下滾動(dòng)或者window下滾動(dòng)
window.addEventListener('scroll', () => {
   this.scrollHide('.el-select-dropdown');
}, false);

2、定義滾動(dòng)監(jiān)聽的容器

/**
 * 滾動(dòng)時(shí)隱藏
 * @param cls 隱藏的元素class:如下拉、時(shí)間彈框等
*/
scrollHide(cls) {
  if( this.mouseUp || this.mouseDown ) { this.delEvents(); } // 先移除
  this.hidePopper(cls);
},

3、隱藏popper

hidePopper(cls = '.el-popper') {
   const dom = document.querySelector(cls);
   console.log(cls, dom, 9999999);
   if( !dom ){ return; }
   // 創(chuàng)建鼠標(biāo)事件
   if (!this.mouseUp || !this.mouseDown) {
      console.log('-----create events-----');
      this.mouseUp = new MouseEvent('mouseup', { 'view': window, 'bubbles': true, 'cancelable': true });
      this.mouseDown = new MouseEvent('mousedown', { 'view': window, 'bubbles': true, 'cancelable': true });
    }
    // 順序觸發(fā)mouseDown、mouseUp
    dom.dispatchEvent(this.mouseDown);
    dom.dispatchEvent(this.mouseUp);
},

4、清除鼠標(biāo)事件

delEvents() {
   console.log('-----delete events-----');
   this.mouseUp = null;
   this.mouseDown = null;
},

使用:

1、隱藏下拉項(xiàng)

// 如果是el-table中的select,則監(jiān)聽的dom為.el-table__body-wrapper
// 如果是在自定義的元素里,則監(jiān)聽的dom為自定義滾動(dòng)的元素 如 .wrapper
window.addEventListener('scroll', () => {
    this.scrollHide('.el-select-dropdown');
}, false);

2、隱藏時(shí)間彈框

// 如果是el-table中的select,則監(jiān)聽的dom為.el-table__body-wrapper
// 如果是在自定義的元素里,則監(jiān)聽的dom為自定義滾動(dòng)的元素 如 .wrapper
 
window.addEventListener('scroll', () => {
    this.scrollHide('.el-date-range-picker');
}, false);

總結(jié)

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

相關(guān)文章

  • vue如何在用戶要關(guān)閉當(dāng)前網(wǎng)頁時(shí)彈出提示的實(shí)現(xiàn)

    vue如何在用戶要關(guān)閉當(dāng)前網(wǎng)頁時(shí)彈出提示的實(shí)現(xiàn)

    這篇文章主要介紹了vue如何在用戶要關(guān)閉當(dāng)前網(wǎng)頁時(shí)彈出提示的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • vue form 表單提交后刷新頁面的方法

    vue form 表單提交后刷新頁面的方法

    今天小編就為大家分享一篇vue form 表單提交后刷新頁面的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue cli4中mockjs在dev環(huán)境和build環(huán)境的配置詳情

    vue cli4中mockjs在dev環(huán)境和build環(huán)境的配置詳情

    這篇文章主要介紹了vue cli4中mockjs在dev環(huán)境和build環(huán)境的配置詳情,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 深入了解Vue Pinia持久化存儲(chǔ)二次封裝

    深入了解Vue Pinia持久化存儲(chǔ)二次封裝

    Pinia 是2019年由vue.js官方成員重新設(shè)計(jì)的新一代狀態(tài)管理庫,類似Vuex,下面我們就來學(xué)習(xí)一下如何通過Pinia實(shí)現(xiàn)持久化存儲(chǔ)的相關(guān)知識(shí),感興趣的小伙伴可以了解下
    2023-12-12
  • Vue.js實(shí)現(xiàn)時(shí)間軸功能

    Vue.js實(shí)現(xiàn)時(shí)間軸功能

    這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)時(shí)間軸功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Vue自定義指令詳解

    Vue自定義指令詳解

    這篇文章主要介紹了Vue自定義指令詳解,需要的朋友可以參考下
    2022-12-12
  • Vue如何防止按鈕重復(fù)點(diǎn)擊方案詳解

    Vue如何防止按鈕重復(fù)點(diǎn)擊方案詳解

    這篇文章主要介紹了vue 如何處理防止按鈕重復(fù)點(diǎn)擊問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Vue項(xiàng)目業(yè)務(wù)邏輯模塊介紹

    Vue項(xiàng)目業(yè)務(wù)邏輯模塊介紹

    這篇文章主要介紹了Vue項(xiàng)目業(yè)務(wù)邏輯,不同的項(xiàng)目有不同的功能,不同的功能需要不同的實(shí)現(xiàn),實(shí)現(xiàn)這些核心功能的代碼就叫業(yè)務(wù)邏輯。所以說業(yè)務(wù)邏輯是指一個(gè)實(shí)體單元為了向另一個(gè)實(shí)體單元提供服務(wù),應(yīng)該具備的規(guī)則與流程
    2022-11-11
  • 使用vue自定義指令開發(fā)表單驗(yàn)證插件validate.js

    使用vue自定義指令開發(fā)表單驗(yàn)證插件validate.js

    今天就來介紹一下如何利用vue的自定義指令directive來開發(fā)一個(gè)表單驗(yàn)證插件的過程,需要的朋友可以參考下
    2019-05-05
  • Vue + Element UI 實(shí)現(xiàn)權(quán)限管理系統(tǒng)之菜單功能實(shí)現(xiàn)代碼

    Vue + Element UI 實(shí)現(xiàn)權(quán)限管理系統(tǒng)之菜單功能實(shí)現(xiàn)代碼

    菜單管理是一個(gè)對(duì)菜單樹結(jié)構(gòu)的增刪改查操作,這篇文章主要介紹了Vue + Element UI 實(shí)現(xiàn)權(quán)限管理系統(tǒng)之菜單功能實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2022-02-02

最新評(píng)論

阿拉善左旗| 峡江县| 凤阳县| 福贡县| 汝阳县| 呈贡县| 大石桥市| 武宁县| 云霄县| 广昌县| 彰化市| 开封市| 方山县| 蒙山县| 昭苏县| 东乌珠穆沁旗| 天峻县| 海安县| 奉化市| 谷城县| 兴化市| 南通市| 朔州市| 中阳县| 上栗县| 天长市| 定远县| 黄冈市| 佛冈县| 乐东| 张家口市| 安陆市| 仁化县| 布尔津县| 加查县| 五大连池市| 尚义县| 新乡市| 禹州市| 兴海县| 南溪县|