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

mhe*_*nry 15 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>
Run Code Online (Sandbox Code Playgroud)

和以下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;
});
Run Code Online (Sandbox Code Playgroud)

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

mhe*_*nry 25

父页面上的脚本:

$(".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;
});
Run Code Online (Sandbox Code Playgroud)

子页面上的脚本:

// 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();
Run Code Online (Sandbox Code Playgroud)


小智 6

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

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

$("#btnSelCliente", opener.window.document).click();
Run Code Online (Sandbox Code Playgroud)

opener.window.document我们告诉jQuery的对象是在打开的弹出窗口.