0

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

这是我的输入:

<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。如果您有同样的问题,我建议您检查选择的答案,但它使我的代码更好。

4

2 回答 2

1

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

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

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

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

在子窗口中:

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

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

于 2014-12-16T14:08:55.863 回答
0

如果您启用了 php,我会使用它而不是通过 javascript 发送。如果您需要同一页面上的信息,我会使用 AJAX。

http://api.jquery.com/jquery.post/

一个样本看起来像这样。

$.post( "test.php", $( "#testform" ).serialize() );
<form id="testform">
<input name="something">
</form>

这将采用一个表单并提交名为“something”的输入并将其发布到“test.php”页面。

于 2014-12-16T14:09:07.477 回答