之前我曾经问过这个问题,但过了一段时间后,我觉得我必须在经历的问题上更加明确。
情景:
FOR FORIREDED RESULT:
正如您将注意到,在_POST变量中返回了field_1和field_2的值。
产生错误1:
正如您将注意到的那样只返回field_2。
产生错误2:
正如您将注意到的那样,只返回field_1。
随意在源头挖掘,没有任何与众不同的东西。这是FB的问题吗?如果是这样,怎么能纠正?我在这里试着疯了。
答案 0 :(得分:0)
首先,您必须了解fancybox如何处理inline
内容:当您打开fancybox时,目标inline
内容从其在DOM中的位置“移动” fancybox(改为占位符)
...在您的情况下,字段会在form
之外“移动”,因此当您从fancybox中提交字段时,字段field_1
或field_2
都不存在在form
内,因此他们无法返回任何价值。
您需要重新编写代码的逻辑。我要做的是bind
将fancybox中的form
提交到关闭fancybox的事件的链接(将字段返回到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
选择器,以便我们在关闭fancybox之后提交 form
(我们不会提交使用form
按钮关闭close
IF fancybox
这样,无论是否从fancybox内部提交,您的表单都会返回所有值。