国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解如何在Vue里建立長按指令

2024-05-06 15:31:22
字體:
供稿:網(wǎng)友

您是否曾想過按住按鈕幾秒鐘才能在Vue應用程序中執(zhí)行某個功能?

您是否曾想在應用程序上創(chuàng)建一個按鈕,通過按一次(或按住按鈕的整個輸入)來清除單個輸入?

如果你曾有過這些想法,很好,我也是。那么恭喜你看到了這篇文章。

本文將解釋如何通過按下(或按住)按鈕來執(zhí)行功能和刪除輸入。

首先,我將解釋如何在VanillaJS中實現(xiàn)這一目標。然后,為它創(chuàng)建一個Vue指令。

那么,讓我們開始吧。

原理

為了實現(xiàn)長按,用戶需要按住按鈕幾秒鐘。

要在代碼中復制它,我們需要在按下鼠標“單擊”按鈕時監(jiān)聽,啟動計時器,不管我們希望用戶在執(zhí)行函數(shù)之前按住按鈕,并在時間設置之后執(zhí)行該功能。

非常簡單!但是,我們需要知道用戶何時按住該按鈕。

怎么做

當用戶單擊按鈕時,在單擊事件之前會觸發(fā)另外兩個事件: mousedown 和 mouseup 。

當用戶按下鼠標按鈕時會調(diào)用 mousedown 事件,而當用戶釋放該按鈕時會調(diào)用mouseup事件。

我們需要做的就是:

發(fā)生mousedown事件后啟動計時器。

清除該計時器,并且在2secs標記之前觸發(fā)mouseup事件后不執(zhí)行該函數(shù)。即完整點擊事件。

只要計時器在到達那個時間之前沒有被清除,我們就會發(fā)現(xiàn)mouseup事件沒有被觸發(fā) - 我們可以說用戶沒有釋放按鈕。因此,它被認為是長按,然后我們可以繼續(xù)執(zhí)行所述功能。

實際操作

讓我們深入研究代碼并完成這項工作。

首先,我們必須定義3件事,即:

variable 用于存儲計時器。

start 函數(shù)啟動計時器。

cancel 函數(shù)取消定時器

變量

這個變量基本上保存了setTimeout的值,所以我們可以在發(fā)生mouseup事件時取消它。

let pressTimer = null;

我們將變量設置為null,這樣我們就可以檢查變量,以便知道當前是否有一個活動定時器,然后才能取消它。

啟動功能

該函數(shù)由setTimeout組成,它基本上是Javascript中的一種方法,它允許我們在函數(shù)中聲明的特定持續(xù)時間之后執(zhí)行函數(shù)。

請記住,在創(chuàng)建click事件的過程中,會觸發(fā)兩個事件。但我們需要啟動計時器的是mousedown事件。因此,如果是單擊事件,我們不需要啟動計時器。

// Create timeout ( run function after 1s )let start = (e) => {    // Make sure the event trigger isn't a click event  if (e.type === 'click' && e.button !== 0) {    return;  }  // Make sure we don't currently have a setTimeout running  // before starting another  if (pressTimer === null) {    pressTimer = setTimeout(() => {      // Execute soemthing !!!    }, 1000)  }}

取消功能

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 阜阳市| 丹江口市| 丰镇市| 陆丰市| 普陀区| 济宁市| 游戏| 工布江达县| 两当县| 图们市| 陇西县| 会东县| 灌阳县| 灵宝市| 双城市| 北碚区| 汽车| 资兴市| 沈阳市| 灵台县| 巨野县| 卓尼县| 湟中县| 布尔津县| 双流县| 正安县| 庆云县| 临城县| 梅河口市| 余姚市| 张家港市| 龙井市| 枝江市| 江都市| 阳高县| 大邑县| 兴山县| 嵊泗县| 磴口县| 山阳县| 洛扎县|