2012-03-04 73 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