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

詳解小程序如何避免多次點(diǎn)擊,重復(fù)觸發(fā)事件

 更新時(shí)間:2019年04月08日 14:11:16   作者:honey緣木魚(yú)  
這篇文章主要介紹了詳解小程序如何避免多次點(diǎn)擊,重復(fù)觸發(fā)事件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

作為前端開(kāi)發(fā),我們經(jīng)常會(huì)遇到的場(chǎng)景,比如用戶點(diǎn)擊獲取驗(yàn)證碼按鈕時(shí),沒(méi)有反應(yīng),大部分用戶都會(huì)接著點(diǎn)擊,這就會(huì)造成用戶收到多條驗(yàn)證碼,這是因?yàn)楹笈_(tái)api請(qǐng)求比較慢,而客戶端體驗(yàn)又做得不到位,導(dǎo)致用戶以為沒(méi)點(diǎn)擊到或者是頁(yè)面假死,在上次請(qǐng)求還沒(méi)處理完,就再次點(diǎn)擊按鈕。這對(duì)于我們開(kāi)發(fā)來(lái)說(shuō),這是bug。

如何解決或避免這個(gè)問(wèn)題呢?一般來(lái)說(shuō)有兩種情況。

1、點(diǎn)擊事件是執(zhí)行網(wǎng)絡(luò)請(qǐng)求(提交評(píng)論,驗(yàn)證碼,支付)

這種情況下可以在請(qǐng)求執(zhí)行之前顯示一個(gè)模式的加載框,請(qǐng)求完成后再關(guān)閉加載框。

由于小程序在1.1.0版本基礎(chǔ)庫(kù)才支持wx.showLoading,因此需要對(duì)低版本做兼容處理,代碼如下:

 function showLoading(message) {
 if (wx.showLoading) {
  // 基礎(chǔ)庫(kù) 1.1.0 微信6.5.6版本開(kāi)始支持,低版本需做兼容處理
  wx.showLoading({
   title: message,
   mask: true
  });
 } else {
  // 低版本采用Toast兼容處理并將時(shí)間設(shè)為20秒以免自動(dòng)消失
  wx.showToast({
   title: message,
   icon: 'loading',
   mask: true,
   duration: 20000
  });
 }
}
 
function hideLoading() {
 if (wx.hideLoading) {
  // 基礎(chǔ)庫(kù) 1.1.0 微信6.5.6版本開(kāi)始支持,低版本需做兼容處理
  wx.hideLoading();
 } else {
  wx.hideToast();
 }
}

我們可以將顯示加載框和關(guān)閉加載框的代碼放在公共的代碼里面比如util,然后在使用時(shí)直接調(diào)用即可。

function request() {
 util.showLoading('加載中...');
 wx.request({
  url: app.globalData.host + 'xxx',
  data: {...},
  method: 'GET',
  success: function (res) {
   util.hideLoading()
   ...
  },
  fail: function (res) {
   util.hideLoading()
   ...
  }
 })
}

2、點(diǎn)擊事件是頁(yè)面跳轉(zhuǎn)

當(dāng)點(diǎn)擊事件需要頁(yè)面跳轉(zhuǎn)時(shí),不太適合顯示加載框,但小程序的頁(yè)面跳轉(zhuǎn)并不是很快,如果不作處理又會(huì)導(dǎo)致用戶反復(fù)點(diǎn)擊打開(kāi)多個(gè)頁(yè)面,這里可以使用限制按鈕或控件的點(diǎn)擊間隔的方式處理,同樣可以將這個(gè)方法放到公共的代碼里面比如util,然后在使用時(shí)直接調(diào)用即可。

function buttonClicked(self) {
 self.setData({
  buttonClicked: true
 })
 setTimeout(function () {
  self.setData({
   buttonClicked: false
  })
 }, 500)
}

首先需要在頁(yè)面對(duì)應(yīng)的js文件里面增加一個(gè)buttonClicked數(shù)據(jù)對(duì)象,然后在點(diǎn)擊事件里面調(diào)用上述方法。

Page({
 data: {
  buttonClicked: false
 },
 click: function (e) {
  util.buttonClicked(this);
  var id = e.currentTarget.dataset.id;
  wx.navigateTo({
   url: '../detail/detail?id=' + id
  })
 },
})

另外,在wxml的點(diǎn)擊控件中通過(guò)buttonClicked判斷是否可以點(diǎn)擊,可以用bindtap也可以用disabled

<view bindtap="{{!buttonClicked?'click':''}}" data-id="{{id}}" />
<button bindtap="{{!buttonClicked?'click':''}}" data-id="{{id}}" />
<button bindtap="click" disabled="buttonClicked" data-id="{{id}}" />

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于JavaScript+IntersectionObserver實(shí)現(xiàn)高性能圖片懶加載

    基于JavaScript+IntersectionObserver實(shí)現(xiàn)高性能圖片懶加載

    在 Web 開(kāi)發(fā)中,圖片懶加載是一種常見(jiàn)的優(yōu)化手段,尤其在長(zhǎng)列表頁(yè)面中,按需加載圖片可以顯著提升頁(yè)面性能,本篇文章將通過(guò) JavaScript 和 Intersection Observer,實(shí)現(xiàn)一個(gè)帶有卡片樣式的高性能圖片懶加載示例,需要的朋友可以參考下
    2025-01-01
  • 微信小程序?qū)崿F(xiàn)頁(yè)面浮動(dòng)導(dǎo)航

    微信小程序?qū)崿F(xiàn)頁(yè)面浮動(dòng)導(dǎo)航

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)頁(yè)面浮動(dòng)導(dǎo)航,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • js實(shí)現(xiàn)簡(jiǎn)潔的TAB滑動(dòng)門效果代碼

    js實(shí)現(xiàn)簡(jiǎn)潔的TAB滑動(dòng)門效果代碼

    這篇文章主要介紹了js實(shí)現(xiàn)簡(jiǎn)潔的TAB滑動(dòng)門效果代碼,通過(guò)簡(jiǎn)單的JavaScript自定義函數(shù)動(dòng)態(tài)遍歷頁(yè)面元素實(shí)現(xiàn)tab滑動(dòng)切換的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • JavaScript異步操作的方法小結(jié)

    JavaScript異步操作的方法小結(jié)

    在現(xiàn)代Web開(kāi)發(fā)中,異步編程是不可或缺的一部分,JavaScript通過(guò)多種方式支持異步操作,允許開(kāi)發(fā)者處理非阻塞代碼執(zhí)行,從而提高應(yīng)用性能和響應(yīng)速度,本文給大家介紹了JavaScript異步操作的常見(jiàn)方法,需要的朋友可以參考下
    2025-01-01
  • 利用JS屏蔽頁(yè)面中的Enter按鍵提交表單的方法

    利用JS屏蔽頁(yè)面中的Enter按鍵提交表單的方法

    下面小編就為大家?guī)?lái)一篇利用JS屏蔽頁(yè)面中的Enter按鍵提交表單的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • JavaScript中好用的解構(gòu)用法詳解

    JavaScript中好用的解構(gòu)用法詳解

    這篇文章主要為大家介紹了JavaScript中好用的解構(gòu)用法操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 由淺到深了解JavaScript類

    由淺到深了解JavaScript類

    由淺到深了解JavaScript類...
    2007-01-01
  • 編程語(yǔ)言JavaScript簡(jiǎn)介

    編程語(yǔ)言JavaScript簡(jiǎn)介

    這篇文章主要介紹了編程語(yǔ)言JavaScript簡(jiǎn)介,本文講解了JavaScript是什么、JavaScript特點(diǎn)、JavaScript和Java的區(qū)別等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • js實(shí)現(xiàn)鼠標(biāo)切換圖片(無(wú)定時(shí)器)

    js實(shí)現(xiàn)鼠標(biāo)切換圖片(無(wú)定時(shí)器)

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)鼠標(biāo)切換圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • BootStrap Validator 根據(jù)條件在JS中添加或移除校驗(yàn)操作

    BootStrap Validator 根據(jù)條件在JS中添加或移除校驗(yàn)操作

    這篇文章主要介紹了BootStrap Validator 根據(jù)條件在JS中添加或移除校驗(yàn)的相關(guān)資料,需要的朋友可以參考下
    2017-10-10

最新評(píng)論

通州市| 佛教| 南陵县| 晋州市| 江陵县| 罗田县| 体育| 晋中市| 阿克苏市| 崇仁县| 潞城市| 玛曲县| 甘谷县| 长春市| 岑巩县| 社旗县| 吉安县| 衡阳县| 克什克腾旗| 凯里市| 高密市| 和田县| 岚皋县| 西丰县| 武定县| 裕民县| 东乡| 博野县| 宜昌市| 平遥县| 武清区| 石林| 扬州市| 年辖:市辖区| 舞钢市| 郯城县| 海林市| 资源县| 中方县| 阆中市| 夏河县|