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

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

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

作為前端開發(fā),我們經(jīng)常會遇到的場景,比如用戶點擊獲取驗證碼按鈕時,沒有反應(yīng),大部分用戶都會接著點擊,這就會造成用戶收到多條驗證碼,這是因為后臺api請求比較慢,而客戶端體驗又做得不到位,導(dǎo)致用戶以為沒點擊到或者是頁面假死,在上次請求還沒處理完,就再次點擊按鈕。這對于我們開發(fā)來說,這是bug。

如何解決或避免這個問題呢?一般來說有兩種情況。

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

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

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

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

我們可以將顯示加載框和關(guān)閉加載框的代碼放在公共的代碼里面比如util,然后在使用時直接調(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、點擊事件是頁面跳轉(zhuǎn)

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

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

首先需要在頁面對應(yīng)的js文件里面增加一個buttonClicked數(shù)據(jù)對象,然后在點擊事件里面調(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的點擊控件中通過buttonClicked判斷是否可以點擊,可以用bindtap也可以用disabled

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

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

相關(guān)文章

  • js代碼實現(xiàn)多人聊天室

    js代碼實現(xiàn)多人聊天室

    這篇文章主要為大家詳細(xì)介紹了js代碼實現(xiàn)多人聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 微信小程序整個頁面的自動適應(yīng)布局的實現(xiàn)

    微信小程序整個頁面的自動適應(yīng)布局的實現(xiàn)

    這篇文章主要介紹了微信小程序整個頁面的自動適應(yīng)布局的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • js封裝成插件_Canvas統(tǒng)計圖插件編寫實例

    js封裝成插件_Canvas統(tǒng)計圖插件編寫實例

    下面小編就為大家?guī)硪黄猨s封裝成插件_Canvas統(tǒng)計圖插件編寫實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • js獲取class的所有元素

    js獲取class的所有元素

    ie不支持getElementsByClassName,所以要自己實現(xiàn)獲取類名為className的所有元素。
    2013-03-03
  • 小程序?qū)崿F(xiàn)頁面給自定義組件賦值

    小程序?qū)崿F(xiàn)頁面給自定義組件賦值

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)頁面給自定義組件賦值,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 微信小程序 簡易計算器實現(xiàn)代碼實例

    微信小程序 簡易計算器實現(xiàn)代碼實例

    這篇文章主要介紹了微信小程序 簡易計算器實現(xiàn)代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 拖動table標(biāo)題實現(xiàn)改變td的大小(css+js代碼)

    拖動table標(biāo)題實現(xiàn)改變td的大小(css+js代碼)

    拖動列寬的表格table標(biāo)題同時改變td的大小,本文將以實例演示為大家呈現(xiàn),感興趣的朋友可以參考下哈,希望對你學(xué)習(xí)js或者css有所幫助
    2013-04-04
  • 原生js輪播特效

    原生js輪播特效

    這篇文章主要為大家詳細(xì)介紹了原生js輪播特效,簡單實用的代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • js中settimeout方法加參數(shù)的使用實例

    js中settimeout方法加參數(shù)的使用實例

    這篇文章主要介紹了js中settimeout方法加參數(shù)的使用,需要的朋友可以參考下
    2014-02-02
  • 如何在微信小程序中使用骨架屏的步驟

    如何在微信小程序中使用骨架屏的步驟

    這篇文章主要介紹了如何在微信小程序中使用骨架屏的步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06

最新評論