我在堆棧溢出中發現了這個問題的變體,但沒有任何一個符合我的具體情況。希望有人有一些見解。等到所有腳本完成後再啓用按鈕
現在我正在開發一個Web應用程序,其中有一個按鈕(技術上是錨標籤),用於在按下時生成項目列表。問題是,如果用戶連續兩次按下此按鈕,列表將會產生兩次 - 按鈕是爲了避免重複而在清除列表之前清除列表,但有關腳本交互的方式會導致此問題錯誤。該按鈕通過對服務器進行ajax調用來生成列表。
現在,我已經嘗試修復這個bug,通過將按鈕按下時將布爾值翻轉爲1,並使該按鈕無效,直到它再次爲0。這似乎不工作,無論我在代碼中的值再次設置爲0:我試着把它放在ajaxGet函數的末尾,以及頁面加載後,但這兩個解決方案都不起作用。
理想情況下,我希望在頁面完成加載和渲染後立即啓用按鈕。最終,需要的是阻止用戶連續兩次按下按鈕的方式。我已經考慮過使用計時器,但我寧願不必訴諸於此。
任何想法?讓我知道你是否想要代碼片段。
===========================================
編輯:謝謝大家的答案!我用Fibrewire的答案來解決這個問題,它效果很好。在按鈕調用方法的開始處,我輸入以下代碼:
if (actionsDisabled == 1) {
return;
}//if
else {
actionsDisabled = 1;
setTimeout("actionsDisabled=0;", 1000);
}//else
其中actionsDisabled是全局布爾值。它可能不是一樣的密封(特別是,如果列表花費了超過一秒的時間加載,你會遇到問題),但它的優雅性和功能性,還有減少服務器請求的額外好處(如果流量曾經成爲一個問題,你可以限制每5秒或10秒或其他任何一次呼叫)。再次感謝!
我認爲我們將需要看到一些示例代碼來表示問題。 – 2012-07-06 13:37:01
聽起來像你應該使用一個標誌,通過你的ajax' complete'事件清除,並通過你的錨點'click'事件詢問。 – jbabey 2012-07-06 13:37:25
我可能是在簡化它,但爲什麼不能通過一次綁定它,然後重新綁定到代碼塊的末尾? – Snuffleupagus 2012-07-06 13:37:40