2010-10-05 54 views
0

我的要求是這樣的。 步驟: -如何根據我的以下要求處理Javascript的Confirm()?

  1. 在客戶端點擊(按鈕)
  2. 禁用按鈕。
  3. 然後它應該提示爲確定或取消。
  4. 如果確定,然後觸發OnClick事件(代碼隱藏)。
  5. 如果取消,則不要進行服務器端跳閘並啓用該按鈕。

以下是我用於該按鈕的代碼。

<asp:Button ID="btn1" OnClientClick="this.disabled=true;return Confirm();" Text="Testing" runat="server" /> 

但不是我所期望的,它是禁用按鈕並提示確認,但如果用戶點擊取消,則按鈕保持禁用狀態。

回答

1

沒有必要禁用該按鈕。用戶無需點擊確認框中的按鈕即可進行任何操作。只用這個。

OnClientClick="return confirm('Are you sure you want to Submit?');" 
+1

+1,不過我認爲禁用按鈕的點後,便點擊「OK」,並出現回傳,如果它需要幾秒鐘的響應,我假設他要預防雙-postback。從技術上講,他們可以再次點擊提交,並在響應之前再次點擊「確定」。 – Keith 2010-10-05 19:17:37

+0

@凱斯是對的。那就是現在正在發生的事情。用戶不止一次點擊按鈕 – Jango 2010-10-05 19:28:26

0

在OnClientClick-

this.disabled=true; 
var result = Confirm(); 
this.disabled = result; 
return result; 

試試這個如果你試圖禁用按鈕回發就叫return Confirm();

1

您已經標記了以此爲jQuery的,所以我會建議使用jQuery定義一個事件處理函數,與OnClientClick屬性分開:

<asp:Button runat="server" Text="Testing" CssClass="confirm-button" /> 
<script type="text/javascript"> 
    jQuery(function($) { 
     $('.confirm-button').click(function(event) { 
      $(this).attr('disabled', true); 
      if (!confirm('Are you sure?')) { 
       event.preventDefault(); 
       $(this).attr('disabled', false); 
      } 
     }); 
    }); 
</script> 

但是,由於@Shoban指出,沒有必要禁用該按鈕,因爲confirm是模態。由於confirm是模式,因此只需在confirm提示符處理後禁用按鈕即可。因此,邏輯很可能是清潔劑,如果你只是禁用按鈕,如果從confirm響應是true

+0

我在我的代碼中也使用了Jquery。但現在的問題是這個asp:Button有與之相關的onclick事件。客戶端確認後 - >是 - >是禁用按鈕。這會停止瀏覽器的提交請求(回退行爲),所以按鈕不會觸發OnClick事件。你在這裏說什麼? – Jango 2010-10-07 13:30:28

+0

@Crawling表單提交被禁用,因爲我的代碼調用'event.preventDefault()',而不是因爲它被啓用。我已經編輯了我的答案來解決這個問題(當點擊確認時,它會停止提交,而不是點擊「否」時) – bdukes 2010-10-08 13:03:44

0

只有當他們點擊確定關閉按鈕。

var customConfirm = function(){ 
    var proceed = confirm("are you sure"); 
    if(proceed){ 
    // disable button while server is posting back 
    } 
    return proceed; 
} 
相關問題