2010-08-25 98 views
0

我的网页上有一些链接,点击后打开一个fancybox。在fancybox里面有一些动作按钮(如“关闭项目”,“删除项目”)。点击这些按钮后,我希望它像往常一样提交表单,然后关闭fancybox。我怎样才能在不干扰POST的情况下做到这一点?关闭FancyBox之后?

注意:我没有使用Ajax。

回答

2

如果你的后端上完成时返回的东西,比如我的回声“已发送”你可以这样做:

$.post("php/send_mail.php", function(result){ 
    if(result == 'sent'){ 
    //$('#success').slideDown('slow'); -My code 
    //$('#submit').hide(); -My code 
    $.fancybox.close(); 
    } 
}); 

只有在你的情况,你会想这样做$ .fancybox.close()

如果你通过$ .ajax而不是.post,你可以使用成功:代替。

对不起,如果这没有帮助。

1

马克,

当你说执行后,我假定你的意思是你想要的fancybox只要发送请求(或接近的时间尽可能)关闭?我假设你正在序列化fancyBox的部分作为POST的一部分,并且不想太早关闭它。

在这种情况下,我会充分利用jQuery.ajax beforeSend回调关闭对话框之前送出的请求:

$.ajax({ 
    beforeSend: function() { 
    //close fancybox here 
    } 
}); 

XMLHttpRequest对象是在这一点上创建的,所以不应该有对请求有任何影响。

--Andrew

+0

不......我不需要序列化任何东西。它不使用jQuery.ajax。这是一种常规的旧形式。我想当你点击按钮时,它需要去执行'

'这是一个重定向权限?然后我不知道该把钩子放在哪里。但我想我可以把按钮和完全关闭fancybox ajaxify? – mpen 2010-08-25 19:38:30

0

如何隐藏窗体,窗体部件移动到所述主体元件之下,然后调用form.submit()。

0

我不确定要理解你的问题,但我注意到当fancybox以很多链接打开时,在fancybox的title属性中动态创建的按钮,这些元素不在你的页面的DOM中。 而且你不能与你的页面元素进行交互。

我不知道你如何创建你的行动按钮(如“封闭项”,“删除项目”),也许你应该解释,来帮助我们来帮助你:)

0

我有同样的问题,你有。我有一个很好的解决方案如下。 如果我像往常一样使用php post codeigniter

'<?php 
if ($this->input->post()) 
    { 
*after finishing the action use the below code 

echo "<script> parent.jQuery.fancybox.close(); </script>"; 

}' 
?> 
//if you want to refresh the parent window use parent.location.reload(); before close the //fancy box