jQuery 防止相同的事件快速重復(fù)觸發(fā)方法
重復(fù)觸發(fā)就是防止用戶重復(fù)點(diǎn)擊提交數(shù)據(jù)了,我們一般都是點(diǎn)擊之后沒反應(yīng)會(huì)再次點(diǎn)擊了,這個(gè)不但要從用戶體驗(yàn)上來(lái)做好,還在要js或php程序腳本上做好,讓用戶知道點(diǎn)擊是己提交服務(wù)器正在處理,下面我就整理從腳本上來(lái)處理此重復(fù)觸發(fā)的問(wèn)題。
很多時(shí)候事件會(huì)被快速重復(fù)觸發(fā),比如 click,這樣就會(huì)執(zhí)行兩次代碼,造成很多后果?,F(xiàn)在有比較多的解決方法,但幾乎都有局限性,比如一個(gè) Ajax 表單,如果防止用戶一次點(diǎn)好多下可以在第一次點(diǎn)擊的時(shí)候凍結(jié)提交按鈕,直到允許再次點(diǎn)擊的時(shí)候再放開。很多人都這樣干,但在其他的情況就不是很有效了。
下面推薦一個(gè)不錯(cuò)的方法,首先丟一個(gè)函數(shù)進(jìn)去。
var _timer = {}; function delay_till_last(id, fn, wait) { if (_timer[id]) { window.clearTimeout(_timer[id]); delete _timer[id]; } return _timer[id] = window.setTimeout(function() { fn(); delete _timer[id]; }, wait); }
使用方法
$dom.on('click', function() { delay_till_last('id', function() {//注意 id 是唯一的 //響應(yīng)事件 }, 300); });
上面的代碼可以讓點(diǎn)擊之后等待 300 毫秒,如果在 300 毫秒內(nèi)又發(fā)生了這個(gè)事件則廢除上一次點(diǎn)擊,重新計(jì)時(shí),反復(fù)如此,直到完全等待了 300 毫秒再響應(yīng)事件。
這個(gè)函數(shù)很有用的,比如驗(yàn)證輸入或者根據(jù)輸入的郵箱實(shí)時(shí)拉去頭像而不用等到必須失焦再拉取。
例子
按鈕BUTTON類
a標(biāo)簽類
對(duì)于第一類情況,button有一個(gè)屬性是disabled控制其是否可以點(diǎn)擊,看代碼
<input type="button" value="Click" id="subBtn"/> <script type="text/javascript"> function myFunc(){ //code //執(zhí)行某段代碼后可選擇移除disabled屬性,讓button可以再次被點(diǎn)擊 $("#subBtn").removeAttr("disabled"); } $("#subBtn").click(function(){ //讓button無(wú)法再次點(diǎn)擊 $(this).attr("disabled","disabled"); //執(zhí)行其它代碼,比如提交事件等 myFunc(); }); </script>
以上這篇jQuery 防止相同的事件快速重復(fù)觸發(fā)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
ztree實(shí)現(xiàn)權(quán)限橫向顯示功能
最近在做權(quán)限功能的時(shí)候,采用的ztree實(shí)現(xiàn)的,但是產(chǎn)品要求最后一層的權(quán)限節(jié)點(diǎn)要橫向顯示。下面小編把基于ztree實(shí)現(xiàn)權(quán)限橫向顯示功能的實(shí)現(xiàn)思路分享給大家,供大家參考2017-05-05jquery上傳插件fineuploader上傳文件使用方法(jquery圖片上傳插件)
這篇文章主要介紹了jquery插件fineuploader上傳文件很用方法2013-12-12jQuery對(duì)JSON數(shù)據(jù)進(jìn)行排序輸出的方法
這篇文章主要介紹了jQuery對(duì)JSON數(shù)據(jù)進(jìn)行排序輸出的方法,涉及jQuery中g(shù)etJSON與sort等方法的使用技巧,需要的朋友可以參考下2015-06-06jQuery ajax BUG:object doesn''t support this property or met
使用$.ajax時(shí)出現(xiàn)的錯(cuò)誤,IE7下才會(huì)出錯(cuò),IE6,IE8都正常。2010-07-07用jQuery解決IE不支持的option disable屬性
使用jQuery解決IE不支持的option disable屬性2009-05-05jquery簡(jiǎn)單實(shí)現(xiàn)幻燈片的方法
這篇文章主要介紹了jquery簡(jiǎn)單實(shí)現(xiàn)幻燈片的方法,核心的js代碼只有9行即可實(shí)現(xiàn)幻燈切換效果,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-08-08jQuery實(shí)現(xiàn)radio第一次點(diǎn)擊選中第二次點(diǎn)擊取消功能
本篇文章主要介紹了jQuery實(shí)現(xiàn)radio第一次點(diǎn)擊選中第二次點(diǎn)擊取消功能的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-05-05jQuery延遲執(zhí)行的實(shí)現(xiàn)方法
這篇文章主要介紹了jQuery延遲執(zhí)行的實(shí)現(xiàn)方法,結(jié)合簡(jiǎn)單實(shí)例形式分析了jQuery針對(duì)無(wú)法同步執(zhí)行的情況使用延遲執(zhí)行的操作技巧,需要的朋友可以參考下2016-12-12JQueryMiniUI按照時(shí)間進(jìn)行查詢的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇JQueryMiniUI按照時(shí)間進(jìn)行查詢的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06