我有一个按钮,当按下该按钮时会打开一个新窗口,用户在该窗口中选择一个文件并单击它。单击时,该值应传递到表单中的隐藏输入并关闭窗口。一切都按应有的方式运行,唯一不起作用的是输入值保持为空。
这是我的输入:
<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.$(...)
,但只要打开窗口仍然存在并且没有跨域问题,它就应该可以工作。
如果不起作用,则可以尝试在打开器中编写一个函数,然后从子窗口中调用它。
在打开程序中(在全局名称空间中或在可从全局访问的某些名称空间中):
function setValue(selector, value) {
$(selector).val(value);
}
在子窗口中:
window.opener.setValue("#value_pdf", file);
我真的看不到为什么
opener.$(...)
不能运行,为什么没有用,因为没有根本的区别。但是,嘿,你永远不知道...关于javascript - 无法将值从window.opener传递给其父级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27506153/