2017-07-26 53 views
0
$.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?

回答

0

我剛纔看到這是一個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

相關問題