javascript - 无法将值从 window.opener 传递到其父级

标签 javascript jquery html window.opener

我有一个按钮,按下该按钮会打开一个新窗口,用户在该窗口中选择一个文件并单击它。单击时,该值应传递到表单中的隐藏输入并关闭窗口。一切都像它应该的那样,唯一不起作用的是输入值保持为空。

这是我的输入:

<input name="value_pdf" value="" type="hidden" id="value_pdf" />

这是函数:

$(".insert").click(
    function () {
            var file = $(this).attr("rel"); //its correct and passes the value I want
            var value = "value_<?php echo $_GET['but'];?>" //again, this is correct too, I've used console.log() to check

            opener.$("#value_pdf").val(file);
            //I've done a console.log() here to to check if #value_pdf had a value and it was correct, it logged something like "database.pdf"

            window.close();
            return false;
    }
);

我的问题是,我哪里做错了?我似乎一切都对......

编辑: 事实证明,在我的代码中的某处,我在 DIV 上有相同的 ID。虽然如果您遇到同样的问题,我建议您检查所选的答案,但这使我的代码变得更好。

最佳答案

我从未尝试过 opener.$(...) 但它看起来应该可以工作,前提是 opener 窗口仍然存在并且不存在跨域问题。

如果它不起作用,那么您可以尝试在打开器中编写一个函数并从子窗口调用它。

在开头(在全局命名空间中或在可从全局访问的某个命名空间中):

function setValue(selector, value) {
    $(selector).val(value);
}

在子窗口中:

window.opener.setValue("#value_pdf", file);

我真的不明白为什么这会起作用,而 opener.$(...) 却不起作用,因为没有根本的区别。但是,嘿,你永远不知道......

关于javascript - 无法将值从 window.opener 传递到其父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27506153/

相关文章:

javascript - 使用 Jquery 切换 div

javascript - 突出显示文本的文本到语音

javascript - 在javascript中使用像美元符号这样的下划线

c# - 使用jquery只检查gridview中的一个复选框

javascript - 使用 CSS 和 jQuery 添加上一个/下一个按钮以滚动容器

javascript - 使用表中的 jquery 填充选择选项按钮

javascript - 如何在 PHP 中使用 jQuery 定期获取数组的 n 项?

javascript - window.fullScreen=true 不工作

HTML 符号实体 - 如何 float

html - 相对于div相对于div如何定位div