2011-04-17 76 views
1

我一直在試圖找到處理這個問題的最佳方法,這是提醒用戶ASP.NET Web表單的即將到來的數據丟失,原因是:ASP.NET客戶端髒表格處理

通過鏈接點擊, -Hitting「後退」,

- 改變形式-Closing瀏覽器

我想,當他們這樣做,讓他們改變主意的選項出現一個簡單的對話框。如果他們這樣做,那麼表格仍然存在。如果他們不這樣做,繼續。

我已經嘗試了幾個jQuery插件來處理這個問題,目前我正在使用dirty_form。當我點擊一個鏈接或嘗試關閉窗口時(它無法處理回來),它正在捕獲髒形式並提醒我。

不幸的是,處理骯髒的形式的情況是不夠的,因爲我似乎不能做任何事情。我的代碼:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#form2").dirty_form().dirty(function (event, data) { 
      /*what here */ 
     }); 
    }); 
</script> 

如何設置此所以,如果他們選擇繼續前進,但它如果他們不這樣做,是不?

另外,如何捕捉瀏覽器的「返回」功能,並以相同的方式處理它?

+0

請指出答案是否有幫助。謝謝 – 2011-04-18 11:35:04

回答

1

關於SO的問題,在this的問題後,我在我們的應用程序中成功實現了這個dirty_form插件。這就是我們最終做的:

// A global variable to table any existing onbeforeunload event 
var oldOnBeforeUnloadEvent; 

// onDirty event that gets triggered by the plugin.. add visual cue to the user to show dirtiness 
function onDirty(event, data) { 
    $("#form2 div.dirtyIndicator").addClass("redAsteriskBG"); 
} 

// onClean event that gets triggered by the plugin.. remove the dirty indicator 
function onClean(event, data) { 
    $("#form2 div.dirtyIndicator").removeClass("redAsteriskBG"); 
} 

// Check for presence of any inputs that are changed 
function checkForDirtyElements() { 
    var message = ''; 
    var dirtyElements = $('.myChangedClassName').length; 
    if (dirtyElements > 0) { 
     message += "IF YOU CONTINUE, ALL YOUR CHANGES WOULD BE LOST!"; 
    } 
    return message; 
} 

// Our onbeforeunload event that does all the magic 
function myOnBeforeUnload() { 
    var message = checkForDirtyElements(); 
    if (message === '') { 
     if (oldOnBeforeUnloadEvent !== null) { 
      message = oldOnBeforeUnloadEvent(); 
     } 
    } 
    if (message.length > 0) { 
     return message; 
    } 
} 

$(document).ready(function() { 
    // On page load set-up/initialize the dirty form with onDirty and onClean events 
    $("#form2").dirty_form({ 
     changedClass: 'myChangedClassName' 
    }).dirty(onDirty).clean(onClean); 

    // Save the existing onbeforeunload event to a global variable and attach our custom onbeforeunload 
    oldOnBeforeUnloadEvent = window.onbeforeunload; 
    window.onbeforeunload = myOnBeforeUnload; 
}); 
+0

我的應用程序目前不需要跟蹤骯髒狀態反轉,所以我可能只是推出自己的。敬請關注。 – Michael 2011-04-28 02:34:20