首先你必须了解fancybox是如何处理inline
内容的:当你打开fancybox时,目标inline
内容会从它在DOM中的位置“移动”到fancybox中(而是留下一个占位符)
...在您的情况下,这些字段被“移出”,form
因此当您从fancybox 中提交它时,字段field_1
或field_2
不存在于其中,form
因此它们无法返回任何值。
您需要重新编写代码的逻辑。我要做的是将fancybox内bind
的链接提交给关闭fancybox的事件(将字段返回到它们在里面的位置)并在之后提交,所以而不是这些:form
form
form
<a href="#" onClick="document.testform.submit();">Submit from FB 1</a>
和
<a href="#" onClick="document.testform.submit();">Submit from FB 2</a>
会这样做
<a class="submit" href="#nogo" >Submit from FB 1</a>
和
<a class="submit" href="#nogo" >Submit from FB 2</a>
请注意,我添加class="submit"
了处理来自此类选择器的事件。
然后,在脚本顶部创建一个标志(解释如下)
var subMitted = false;
和选择器bind
的click
事件.submit
:
$(".submit").bind("click", function(){
subMitted = true; // set to true when we click on the selector .submit only
$.fancybox.close();
});
并将afterClose
回调添加到您的 fancybox 自定义脚本
$(".fancybox").fancybox({
afterClose: function(){
// will submit if we clicked the selector .submit
if(subMitted){
subMitted = false; // re-initialize the flag
$("form[name='testform']").submit();
}
}
});
如果subMitted
是true
,我们点击.submit
选择器,所以我们将提交关闭后的form
fancybox(我们不提交如果form
fancybox是使用close
按钮关闭的)
这样,您的表单将始终返回所有值,无论它是否从 fancybox 内部提交。