2012-08-17 61 views
0

我有一個jQuery函數設置一個隱藏的字段值時,對可編輯的GridView中的文本框進行更改。表單上有兩個按鈕;一個保存更改,另一個使用新值執行不同的過程。如果先按下第二個按鈕,我想要出現確認信息,告訴用戶未保存更改。點擊「是」將保存更改並運行該按鈕的過程。點擊「否」不做任何事。我無法使用「return confirm('')」,因爲即使沒有檢測到更改,它也會始終顯示確認。只有當隱藏字段有值時纔會顯示確認(在這種情況下,「已更改」)。我嘗試了各種解決方案,但獲取有關不存在的函數或其他空對象的錯誤。只有條件爲真時,才向asp.net按鈕添加客戶點擊確認?

下檢測到更改和設置隱藏字段的值,以「改變」:

$(function() { 
    $(".gv input.CAIFormat").bind('blur', function (e) { 
     $(this).val(CommaFormatted($(this).val())); 
     var change = $get('ctl00_BodyContentPlaceHolder_TabContainer1_tabSpaceDriver_hidSummaryTableChanged'); 
     change.value = "changed"; 
    }); 
}); 

的asp.net按鈕應該顯示一個確認,如果隱藏字段的值:

<asp:Button ID="btnSaveSDDepartmet" runat="server" Text="Update Departments" /> 
+0

Couldn」在顯示任何對話之前,您的onClientClick是否檢查「已更改」狀態? – Carth 2012-08-17 04:02:45

+0

@Carth,我試過了,但出現錯誤,按鈕仍然執行。 – 2012-08-17 13:39:40

回答

0

用jQuery綁定事件到按鈕,檢查值,然後檢查輸入的值。

FYI - 開始使用on結合事件,bind被棄用的jQuery 1.7的(見http://api.jquery.com/bind/

$("btnSaveSDDepartmet").on('click', function (e) { 
    var change = $get('ctl00_BodyContentPlaceHolder_TabContainer1_tabSpaceDriver_hidSummaryTableChanged'); 
    if (change.value == "changed") { 
     if (!window.confirm("Changes not saved -- continue?")){ 
      e.preventDefault(); 
      return false; 
     } 
    } 
}); 

文檔 * jQuery.on - http://api.jquery.com/on/ * window.confirm - https://developer.mozilla.org/en-US/docs/DOM/window.confirm

-1

以下工作:

<asp:Button ID="btnSaveSDDepartmet" runat="server" Text="Update Departments" CssClass="CAIButton" OnClick="btnSaveSDDepartmet_Click" OnClientClick="if (!ConfirmMsg()) { return false; }" /> 

     function ConfirmMsg() { 
     var obj = $get('ctl00_BodyContentPlaceHolder_TabContainer1_tabSpaceDriver_hidSummaryTableChanged'); 
     if (obj.value == "changed") 
      return confirm("Data has been changed, but not saved. Do you want to save and continue?"); 
     else 
      return false; 
    } 
+0

用onClientClick = ConfirmMsg替換當前onClientClick語句不起作用? – Carth 2012-08-17 15:34:26