2009-06-02 77 views
2

我使用這段代碼,使網頁上的文本按鈕原型:如何防止按鈕按下,直到響應由

<a href='#' onclick="new Ajax.Updater('history', '/responsesG', {parameters: {name: '%s', port: '%s', profil: '201', action: 'profile'}, 
    insertion: Insertion.Top} 
     ); return false;">Do something</a> 

,因爲它是昂貴的電話,我想,以防止多個用戶點擊它因爲它使異步調用,他們得到爲同樣的事情例如3個響應(響應以來持續3〜5秒)我試圖選項

異步:假

同樣成功(失敗)。我該怎麼做?

編輯:

<a href="#" onclick="diagnostika('mac_adresa');return false;">-Mac address</a> 
<script type="text/javascript"> 
function diagnostika(akcija) { 
      if(!this.clicked) { 
       this.clicked = true; 
       button = this; 
       new Ajax.Updater('history', '/responsesG', { 
        parameters: { 
         name: '%(name)s', 
         port: '%(port)s', 
         action: akcija}, 
        insertion: Insertion.Top, 
        onComplete: function() { 
        button.clicked = false;}});} 
       return false;}; 
</script> 

這是我最終實現。

回答

2

你需要添加類似:

if(!this.clicked) { 
    this.clicked = true; 
    button = this; 
    new Ajax.Updater('history', '/responsesG', { 
     parameters: { 
      name: '%s', 
      port: '%s', 
      profile: '201', 
      action: 'profile' 
     }, 
     insertion: Insertion.Top, 
     onComplete: function() { 
      button.clicked = false; 
     } 
    }); 
} 

return false; 

不過,說真的,這帶來了一個內嵌的的onClick,使其更易於閱讀。

+0

感謝您的編輯,我不知道如何執行多行代碼。 – 2009-06-02 17:36:16

+0

有錯字onCompleted:function()它是onComplete:function() – Ib33X 2009-06-03 07:46:34

+0

是的,這工作如預期謝謝 – Ib33X 2009-06-03 07:47:47

0

禁用(甚至隱藏)onclick處理程序中的鏈接,然後在獲得響應時重新啓用或顯示它。

0

將onclick發送到您自己的功能,禁用按鈕,啓動一個計時器,將重新啓用按鈕,然後執行Ajax.Updaer。

3

給你的鏈接一個唯一的ID屬性,例如:

<a href="#" id="foo">Do something</a> 

然後,在JavaScript,你可以這樣做:

$("foo").observe("click", function() { 
    this.disabled = true; 
    new Ajax.Updater("history", "/responsesG", 
        { parameters: { name: "%s", 
            port: "%s", 
            profile: "201", 
            action: "profile" }, 
        insertion: Insertion.Top }); 
    return false; 
}); 
+0

與此我仍然得到3電話是用戶點擊3次鏈接,而等待第一個完成 – Ib33X 2009-06-03 06:45:32

+0

我覺得 this.disabled = true; 應該禁用按鈕只有按鈕後它仍然是按鈕嗎? – Ib33X 2009-06-03 07:36:43

0

回報全局標誌的onclick,它被設置爲false一次請求退出,並且在返回時返回true

相關問題