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

vue-drag-resize與輸入框/文本框沖突問題

 更新時間:2023年04月23日 14:35:10   作者:band129  
這篇文章主要介紹了vue-drag-resize與輸入框/文本框沖突問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue-drag-resize與輸入框/文本框沖突

拖拽是前端使用較為頻繁的功能了,當(dāng)我們使用vue-drag-resize插件進行拖拽功能實現(xiàn)時,發(fā)現(xiàn)它和輸入框或文本框有沖突,輸入框/文本框無法輸入。

今天主要說怎么去解決該問題。

在測試過程中,發(fā)現(xiàn)出現(xiàn)該問題的原因是輸入框的焦點事件和拖拽的點擊事件沖突了。

找到原因我們就能去解決。

vue-drag-resize插件文檔中提供的解決辦法

<vue-drag-resize @activated="activateEv(index)" />

activateEv(index) {
?? ?console.log('activateEv' + index);
?? ?this.$refs['drag-input'].focus();
}

插件提供的方法確實可以解決該問題,但是在之后的開發(fā)中發(fā)現(xiàn),這針對單個輸入框或文本框確實有效,但是**如果一個彈窗內(nèi)存在多個輸入框/文本框時,只有最后一個輸入框/文本框有效**,說明問題還是沒有得到解決。

解決多輸入框/文本框沖突

思路

其實我們看插件提供的方法,就是給輸入框/文本框主動的設(shè)置焦點事件。那如果我們點擊哪個輸入框/文本框時才給哪個設(shè)置焦點事件不就可以解決問題嗎。

針對這個思路,我們進行代碼調(diào)整。

<detailmove @clicked="clickHandle">

clickHandle(e){
? ? e.target.focus()
}

clicked是插件自帶的點擊事件,當(dāng)我們點擊時,獲取當(dāng)前點擊的dom元素,然后設(shè)置焦點事件。這樣就可以解決了。

當(dāng)然我們針對的是輸入框和文本框,那我們可以加判斷去區(qū)分。

<detailmove @clicked="clickHandle">

clickHandle(e){
? ?if (e.target.nodeName === 'INPUT' || e.target.nodeName === 'TEXTAREA') {
? ? ?? ?e.target.focus()
? ?}?
}

這樣問題就解決了

vue-drag-resize拖拽組件的簡單使用

vue3 

npm i -s vue-drag-resize@next
?
//局部使用
<template>
? <div class="home">
? ? <VueDragResize
? ? ? class="list"
? ? ? :isActive="true"
? ? ? :w="width"
? ? ? :h="height"
? ? ? ? ?:x="left"
? ? ? :y="top"
? ? ? :parentLimitation="parentLimitation"
? ? ? :aspectRatio="aspectRatio"
? ? ? v-on:resizing="resize"
? ? ? v-on:dragging="resize"
? ? >
? ? ? <p>{{ top }} х {{ left }}</p>
? ? ? <p>{{ width }} х {{ height }}</p>
? ? </VueDragResize>
? </div>
</template>
?
<script>
// @ is an alias to /src
import VueDragResize from "vue-drag-resize";
export default {
? components: {
? ? VueDragResize,
? },
? name: "HomeView",
? data() {
? ? return {
? ? ? parentLimitation: true, //true不能超過父組件 fallse可以超過父組件
? ? ? aspectRatio: true, //false不限制寬高比例 true限制寬高比例等比縮放
? ? ? width: 100,
? ? ? height: 100,
? ? ? top: 0,
? ? ? left: 0,
? ? };
? },
? methods: {
? ? resize(newRect) {
? ? ? console.log(newRect);
? ? ? this.width = newRect.width;
? ? ? this.height = newRect.height;
? ? ? this.top = newRect.top;
? ? ? this.left = newRect.left;
? ? },
? },
};
</script>
<style lang="scss" scoped>
.home {
? width: 1920px;
? height: 1080px;
? position: relative;
? top: 0;
? left: 0;
? .list {
? ? position: absolute;
? ? top: 0;
? ? left: 0;
? }
}
</style>

vue2

npm i -s vue-drag-resize
//局部使用
<template>
? <div class="home">
? ? <VueDragResize
? ? ? class="list"
? ? ? :isActive="true"
? ? ? :w="width"
? ? ? :h="height"
? ? ? ? ?:x="left"
? ? ? :y="top"
? ? ? :parentLimitation="parentLimitation"
? ? ? :aspectRatio="aspectRatio"
? ? ? v-on:resizing="resize"
? ? ? v-on:dragging="resize"
? ? >
? ? ? <p>{{ top }} х {{ left }}</p>
? ? ? <p>{{ width }} х {{ height }}</p>
? ? </VueDragResize>
? </div>
</template>
?
<script>
// @ is an alias to /src
import VueDragResize from "vue-drag-resize";
export default {
? components: {
? ? VueDragResize,
? },
? name: "HomeView",
? data() {
? ? return {
? ? ? parentLimitation: true, //true不能超過父組件 fallse可以超過父組件
? ? ? aspectRatio: true, //false不限制寬高比例 true限制寬高比例等比縮放
? ? ? width: 100,
? ? ? height: 100,
? ? ? top: 0,
? ? ? left: 0,
? ? };
? },
? methods: {
? ? resize(newRect) {
? ? ? console.log(newRect);
? ? ? this.width = newRect.width;
? ? ? this.height = newRect.height;
? ? ? this.top = newRect.top;
? ? ? this.left = newRect.left;
? ? },
? },
};
</script>
<style lang="scss" scoped>
.home {
? width: 1920px;
? height: 1080px;
? position: relative;
? top: 0;
? left: 0;
? .list {
? ? position: absolute;
? ? top: 0;
? ? left: 0;
? }
}
</style>

總結(jié)

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

相關(guān)文章

  • vue項目搭建以及全家桶的使用詳細教程(小結(jié))

    vue項目搭建以及全家桶的使用詳細教程(小結(jié))

    這篇文章主要介紹了vue項目搭建以及全家桶的使用詳細教程(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • vue項目適配大屏端的方法示例

    vue項目適配大屏端的方法示例

    眾所周知在vue移動端h5頁面當(dāng)中,適配是經(jīng)常會遇到的問題,這篇文章主要給大家介紹了關(guān)于vue項目適配大屏端的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Vue記住滾動條和實現(xiàn)下拉加載的完美方法

    Vue記住滾動條和實現(xiàn)下拉加載的完美方法

    這篇文章主要給大家介紹了關(guān)于Vue記住滾動條和實現(xiàn)下拉加載的完美方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • vue+element?upload上傳帶參數(shù)的實例

    vue+element?upload上傳帶參數(shù)的實例

    這篇文章主要介紹了vue+element?upload上傳帶參數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue antd的from表單中驗證rules中type的坑記錄

    vue antd的from表單中驗證rules中type的坑記錄

    這篇文章主要介紹了vue antd的from表單中驗證rules中type的坑記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Vue3?路由配置與導(dǎo)航實戰(zhàn)教程

    Vue3?路由配置與導(dǎo)航實戰(zhàn)教程

    Vue?Router?提供了強大的路由管理能力,幫助開發(fā)者輕松構(gòu)建流暢、高效的單頁應(yīng)用,本文將帶你深入探討?Vue3?中的路由配置與導(dǎo)航操作,從安裝到實戰(zhàn),手把手教你掌握?Vue?Router?的使用技巧,需要的朋友可以參考下
    2025-03-03
  • Vue請求后端接口導(dǎo)出excel表格方式

    Vue請求后端接口導(dǎo)出excel表格方式

    這篇文章主要介紹了Vue請求后端接口導(dǎo)出excel表格方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue3的路由傳參方法超全匯總

    Vue3的路由傳參方法超全匯總

    vue路由傳參的使用場景一般都是應(yīng)用在父路由跳轉(zhuǎn)到子路由時,攜帶參數(shù)跳轉(zhuǎn),下面這篇文章主要給大家介紹了關(guān)于Vue3路由傳參方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • Vuex Store 數(shù)據(jù)在頁面刷新后丟失的解決方法

    Vuex Store 數(shù)據(jù)在頁面刷新后丟失的解決方法

    當(dāng)我們使用 Vue.js 和 Vuex 進行狀態(tài)管理時,一個常見的問題是頁面刷新會導(dǎo)致 Vuex store 中的數(shù)據(jù)丟失,本文將詳細介紹解決 Vuex Store 數(shù)據(jù)在頁面刷新后丟失的方法,感興趣的朋友一起看看吧
    2024-08-08
  • vue3?圖片懶加載的兩種方式、IntersectionObserver和useIntersectionObserver實例詳解

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

    這篇文章主要介紹了vue3?圖片懶加載的兩種方式、IntersectionObserver和useIntersectionObserver實例詳解,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-03-03

最新評論

阜平县| 毕节市| 垫江县| 大洼县| 南城县| 临西县| 保康县| 财经| 沂水县| 都兰县| 霍林郭勒市| 行唐县| 奎屯市| 普兰店市| 临高县| 河源市| 如东县| 乌拉特前旗| 辛集市| 呈贡县| 黔南| 循化| 张北县| 洛扎县| 井陉县| 志丹县| 安仁县| 西城区| 马龙县| 扎兰屯市| 隆德县| 南部县| 新宾| 长兴县| 潞西市| 大安市| 安陆市| 武清区| 横峰县| 个旧市| 宁河县|