如何将父值传递给fancybox 2.1.7元素,afterShow?

问题描述:

$.fancybox({ 
    type: 'iframe', 
    href: url, 
    afterShow: function() { 
    var name = parent.$('#pname').val(); 
    $('#fname').val(name); 
    $('#fname').focus(); 
    return true; 
    }, 
    beforeClose: function(){ 
    clsCarr(); 
    }, 

其中pname是父文档中的输入框,fname是fancybox文档中的输入框。如何将pname的值存入fnameafterShow了解pname的价值,但不用于fname如何将父值传递给fancybox 2.1.7元素,afterShow?

我刚才看到这是一个iframe在fancybox。试图让iframe与他们的父文档“交谈”总是很有趣,所以我不积极,我已经有了这100%的权利。 :)

var name = parent.getElementById("lst-ib").value; 
document.querySelector("#fancybox-content iframe").contentDocument.getElementById("fname").value = name; 

我这背后的想法是,可能是你$.fancybox是你的父文档中运行,并且当您使用parent.$('#pname').val()这将是相当于跑步$('#pname').val(),因为父母将不能成为任何“更高”比根文件。因此,如果我的理论是正确的,则需要获取iframe并访问它的contentDocument(或者也许只是document),并获取iframe中元素的ID。

这显然只在iframe与您的父文档使用相同的域时才有效。我相信浏览器现在正在实施某种跨域验证。

+0

父$。('#pname')。val()正在工作。它在父文档中获取pname的值。但我似乎无法在fancybox中打开的文档的fname字段中获得该名称。 fancybox文档是通过ajax调用创建的。 – Linda725

+0

对,我刚刚注意到它是一个iframe?我已经更新了我的答案 - 但我不是100%确定这是正确的。网站是否可以在线分享? – Jonathan

+0

对不起,我只是无法得到这个工作。我得到父母的名字,但无法将其放入fancybox iframe名称中。不知道我做错了什么。 – Linda725