使用jQuery在父窗口和子弹出窗口之间传递数据

时间:2010-12-03 21:58:37

标签: javascript asp.net jquery

我有以下HTML

<tr>
    <td class="label" valign="top">
        Affiliate Party
    </td>
    <td class="field">
        <input type="hidden" name="ctl00$MainContent$ExternalAccountAttributes$AffiliatePartyId" id="AffiliatePartyId" />
        <input name="ctl00$MainContent$ExternalAccountAttributes$AffiliatePartyName" type="text" id="AffiliatePartyName" class="PartyLookup" />
    </td>
</tr>

以及以下Javascript / jQuery

$(".PartyLookup").after("<img src='Images/book_open.png' class='PartyLookupToggle' style='padding-left:4px;' />");

$(".PartyLookupToggle").click(function () {
    window.open("PartySearch.aspx", "PartySearch", "width=400,height=50");
    return false;
});

我需要能够使用class =“PartyLookup”标记任何PartyId输入字段,以便它将修改DOM并将图像包含在输入字段旁边。弹出窗口返回数据以填充隐藏字段和文本字段,但由于click()是通用的,我需要传递输入字段的ID。我不知道该怎么做。有什么建议吗?

3 个答案:

答案 0 :(得分:24)

父页面上的脚本:

$(".PartyLookupToggle").click(function () {
    var id = $(this).prev().prev().attr("id");
    var name = $(this).prev().attr("id");

    var url = "PartySearch.aspx?id=" + id + "&name=" + name;

    window.open(url, "PartySearch", "width=400,height=50");
    return false;
});

子页面上的脚本:

// Get the values from the URL using the jquery.query plug-in
var id = $.query.get("id");
var name = $.query.get("name");

// Get the values from the drop down
var newPartyId = $("#ddlMatchingParties").val();
var newPartyName = $("#ddlMatchingParties option:selected").text();

// Set them to the parent window
window.opener.$("#" + id).val(newPartyId);
window.opener.$("#" + name).val(newPartyName);

// Close the popup
window.close();

答案 1 :(得分:5)

使用jQuery非常简单,在你的子窗口(弹出窗口)中调用你的父窗口对象:

$("#txtCodCliente", opener.window.document).val("VALUE TO "); //assign

$("#btnSelCliente", opener.window.document).click();

使用opener.window.document我们告诉jQuery该对象在窗口中打开弹出窗口。

答案 2 :(得分:2)

查看此教学文章:http://www.plus2net.com/javascript_tutorial/window-child3.php

基本上,您需要在子窗口的表单中执行此操作。你将传递一个这样的值:

opener.document.f1.p_name.value="Any value";

其中f1是父窗口中表单的ID,p_name是表单中字段的名称。

一旦你在父母的一个字段中获得了价值,你就可以随心所欲地做任何事情。

编辑:

要将信息传递给子窗口,最简单的方法可能是通过查询字符串,然后从子窗口中读取查询字符串。在这种情况下,可能类似于:

$(".PartyLookupToggle").click(function () {
    window.open("PartySearch.aspx?id=" + $(this).prev().attr('id'), "PartySearch", "width=400,height=50");
    return false;
});