2012-03-04 71 views
1

我有我的jquery ui對話框的以下設置。jQuery對話框關閉事件永遠不會觸發?

$("#dayEditForm").dialog({ 
     autoOpen: false, 
     height: 475, 
     width: 750, 
     title: "Edit", 
     modal: true, 
     show: 'drop', 
     hide: { effect: "drop", direction: "right" }, 
     open: function() { 
      $("#editForm").validate(); 
     }, 
     close: function() { 
      alert("closing dialog"); 
      $("#editForm").resetForm(); 
     }, 
     buttons: { 
      "Save": function() { 
       var isValid = $("#editForm").valid(); 
       if (isValid) { 
        // Save stuff here 
        $(this).dialog("close"); 
       } 
      }, 
      Cancel: function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 

但是,「close」事件中的alert("closing dialog")從不顯示。我做錯了什麼?

更新: 如果我從對話定義中刪除此行

hide: { effect: "drop", direction: "right" } 

,然後正常工作......

這是一個錯誤?或預期的行爲?

+1

我也一次又一次地使用'close'事件遇到問題。雖然我無法解釋爲什麼,但試着將該事件更改爲'beforeClose',看看這是否有用,它通常對我來說是這樣。 – 2012-03-04 19:12:43

+0

我剛將「resetForm」移到了開放部分。我只希望表單在用戶下次看到之前重置,所以沒關係。 – 2012-03-04 19:27:53

回答

1

我相信這是一個在更高版本中解決的錯誤。請參閱here。 jQuery-ui 1.9.1是解決這個問題的好選擇。

如果你不想升級你的源碼,Goran在評論中的觀點對我來說也適用。將close事件換成beforeClose,它會觸發並取決於您希望完成的事情大致相同。

感謝您發佈的問題,並找出與hide選項的相關性!

0

我認爲您需要使用"Cancel"而不是中的buttons部分。

+3

對象符號將接受連續名稱 – charlietfl 2012-03-04 19:06:41