小程序防止多次點擊


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

function buttonClicked(self) { self.setData({

buttonClicked: true

})

setTimeout(function () { self.setData({

buttonClicked: false

})

}, 500)

}

首先需要在頁面對應的js文件里面增加一個buttonClicked數據對象,然后在點擊事件里面調用上述方法。

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}}" />

 

 

 

更新一下

————————————————————————————

關於快速點擊時重復打開頁面的解決方案 

可以通過css的pointer-events:none來解決。

 

 

在app.wxss增加以下內容:

/*

* 如果添加了hover-class屬性,

* 在點擊時會添加hover-class,並維持400ms后移除

*【注意:對於如果超過400ms仍未跳轉的事件不起作用】

* 給這些hover類增加穿透屬性,可防止重復點擊問題

* 其中xxx-hover為自定義的hover類

*/

.navigator-hover, .xxx-hover {

   pointer-events: none; // 點擊事件直接穿透到下層元素,即跳過這個鏈接或者按鈕

}

  

WXML頁面上例子:

自定義事件:

<view class='field' hover-class='navigator-hover' hover-stay-time='默認400,可自行更改' bindtap='test'></view> 

普通鏈接(自帶navigator-hover):    

<navigator url='xxx'>鏈接navigator> 

 

PS:在測試的時候發現對於button似乎不太好使。

參考:https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=&docid=000caed01d8ca8fa7c1734f3b51c04

 

文章來源:劉俊濤的博客

地址:http://www.cnblogs.com/lovebing

歡迎關注,有問題一起學習歡迎留言、評論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM