2012-12-09 48 views
1

我正在编写一个JavaScript函数来关闭fancybox上提交的fancybox表单。那就是:Javascript函数没有完成

function closeFancyBox() { 
    $.fancybox.close(); 
    $('#calendar').fullCalendar('refetchEvents'); 
} 

它以这种方式的fancybox内触发:

$('form').submit(function() { 
    parent.closeFancyBox();  
}); 

事情是这样的:在的fancybox正在关闭正确,但fullcalendar不刷新显示。当我从控制台调用closeFancyBox();时,它工作并且fullCalendar刷新。我被困在这里。

编辑:

每danronmoon的建议下,我加入了$.fancybox.close();调用后一个断点,并检查什么$('#calendar')回来......它返回一个div元素,符合市场预期。

+0

你为什么要通过变量属性调用函数? 'parent.closeFancyBox();'不应该'closeFancyBox();'? – a0viedo

+0

尝试设置断点并查看$(“#calendar”)返回的值 – danronmoon

+1

调用parent.closeFancyBox();因为调用发生在位于该页面上的iframe中 –

回答

0

您正在提交表单,很明显它会重定向到另一个页面,所以除非您停止发生重定向,否则您将看不到所有代码的工作。

$('form').submit(function(e) { 
    parent.closeFancyBox(); 
    // run either of the following. 
    e.preventDefault(); 
    return false; 
}); 
+0

这似乎阻止表单提交(即将数据保存到数据库)。 –

+0

是的,那么您是否在提交表单之前尝试显示日历?无论如何,它将消失。 – Ibu

+0

以下是它的工作原理:日历提取事件并显示。点击日历上的日期打开一个fancybox,里面是一个iframe,它有一个窗体,它保存到事件数据库。表单提交后,fancybox应该关闭,并且日历应该刷新,只需通过当前表单添加事件。 –

0

我现在还不能确定是什么原因导致这一点,但我没有通过调用fullCalendar的refetchEvents移动到的fancybox afterClose钩设法“修复”它。

总之,这固定了症状,但我不知道是什么导致了潜在的问题。