2011-01-07 31 views
2

假設我想在允許用戶保存記錄之前提示用戶。因此,讓我們假設我有在標記定義了以下按鈕:用於javascript的jQuery替換確認

<asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click"></asp:Button> 

要強制進行提示與正常的JavaScript,我可以電匯OnClick事件爲我保存按鈕是這樣的(我可以Page_Load做到這一點):

btnSave.Attributes.Add("onclick", 
    "return confirm('are you sure you want to save?');"); 

確認呼叫將阻止,直到用戶實際按下是/否按鈕,這是我想要的行爲。如果用戶按下「是」,那麼我的btnSave_OnClick方法將被調用。

對於等價的jquery對話框,我嘗試了類似的東西(見下文)。但問題是,與javascript confirm()不同,它將一路通過此函數(displayYesNoAlert),然後進入我在C#端的btnSave_OnClick方法。我需要一種方法使其「阻止」,直到用戶按下「是」或「否」按鈕,然後返回true或false,以便根據用戶的回答調用或不調用btnSave_OnClick。

目前,我只是放棄了,並與javascript的確認,我只是想知道是否有辦法做到這一點。

function displayYesNoAlert(msg, closeFunction) { 
    dialogResult = false; 

    // create the dialog if it hasn't been instantiated 
    if (!$("#dialog-modal").dialog('isOpen') !== true) { 

     // add a div to the DOM that will store our message 
     $("<div id=\"dialog-modal\" style='text-align: left;' title='Alert!'>").appendTo("body"); 

     $("#dialog-modal").html(msg).dialog({ 
      resizable: true, 
      modal: true, 
      position: [300, 200], 
      buttons: { 
       'Yes': function() { 
        dialogResult = true; 
        $(this).dialog("close"); 
       }, 
       'No': function() { 
        dialogResult = false; 
        $(this).dialog("close"); 
       } 
      }, 
      close: function() { 
       if (closeFunction !== undefined) { 
        closeFunction(); 
       } 
      } 
     }); 
    } 
    $("#dialog-modal").html(msg).dialog('open'); 

} 
+0

這很好,我在找什麼。但是,我的JavaScript確認拉字符串的消息。如何將其附加到div? var where_to_coupon = confirm(pm_info_msg_013); – Jason 2011-08-10 17:59:27

回答

2

我使用了一個回調函數,當他們點擊某個特定的按鈕(如「是」)時引發。您將無法在腳本中阻止執行,但也可以讓UI響應用戶操作。

+0

是的,我知道我可以使用回調函數,請參閱上面的displayYesNoAlert函數的'是'部分。但是這不是我需要的行爲,因爲如果用戶對對話框回覆'是',我希望我的btnSave_Click被稱爲服務器端。 – dcp 2011-01-07 13:55:55

+0

你不能只是複製按鈕用來提高回發的腳本並在回調中執行該腳本?最糟糕的情況下,隱藏「真實」提交按鈕,並使您的虛假提交按鈕使用您的對話框,從而執行$('btnSave')。點擊();我以前以編程方式在客戶端執行回發,但我不記得如何從頭頂開始執行回發。 – HackedByChinese 2011-01-07 14:04:20

0

如果在移動到像SAVE這樣的最終代碼之前只需要一個最終確認框,那麼肯定會有助於在按鈕單擊的回調函數中調用該SAVE()函數。沒關係。

我確實有另外一個問題,如下所示: 我想在表單驗證中使用此自定義確認框,其中可能有多個情況和一個接一個的確認方案。

如果用戶說YES是第一個確認框,我們希望根據表單數據條件顯示第二個確認框。

如果用戶再次對第二個確認框回答YES,那麼我們可能需要出示下一個確認框。 這裏是問題,這在這些情況下還不可能。