2012-06-18 37 views
3

我正在使用jQuery DirtyForms插件來防止用戶無意中在不保存的情況下離開頁面。我在對話框中遇到了一些麻煩。我有兩個按鈕:取消和不保存。使用JQuery DirtyForms插件示例

Cancel操作正常工作:對話框關閉並且新頁面未加載。但是,不保存操作不起作用。新頁面應該加載,但不會發生。

我必須錯過一些明顯的東西。任何人都可以看到我做錯了什麼?

<script type="text/javascript"> 

    $(document).ready(function(){ 
      $('form').dirtyForms(); 
    }); 

    $('a').click(function(event){ 
      event.preventDefault(); 
      var targetUrl = $(this).attr("href"); 

      if($.DirtyForms.isDirty()){ 
        $("#dialog-savechanges").dialog({ 
          height: 250, 
          width: 500, 
          modal: true, 
          buttons: { 
            Cancel: function() { 
              $(this).dialog("close"); 
              $.DirtyForms.choiceContinue = false; 
              $.DirtyForms.choiceCommit(event); 
            }, 
            "Don't Save": function() { 
              $(this).dialog("close"); 
              $.DirtyForms.choiceContinue = true; 
              $.DirtyForms.choiceCommit(event); 
            } 
          } 
        }); 
      } 
    }); 

</script> 

<div id="dialog-savechanges" title="Save Changes?"> 
    <p>You've made changes to this page. Do you want to leave this page without saving?</p> 
</div> 

謝謝!

史蒂夫

+0

請參閱[這個答案](http://stackoverflow.com/questions/35508000/stop-page-from-unloading-within-the-beforeunload-event-handler#35536912)爲正確的方式來實現保存更改按鈕。 – NightOwl888

回答

6

OK,我知道這是明顯的東西...希望這會幫助別人。

的問題是功能的preventDefault:

event.preventDefault(); 

去除之後,對話框的行爲與預期。

+0

+1非常感謝您回來回答您自己的問題 –