Подтвердить что ты не робот

Передача данных между родительским окном и дочерним всплывающим окном с помощью 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;
});

Мне нужно указать флажок ANY PartyId с полем class= "PartyLookup", чтобы он изменил DOM и включил изображение рядом с полем ввода. Всплывающее окно возвращает данные для заполнения как скрытых, так и текстовых полей, но так как click() является общим, мне нужно передать ему идентификатор поля ввода. Я не знаю, как это сделать. Любые предложения?

4b9b3361

Ответ 1

Script на родительской странице:

$(".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;
});

Script на дочерней странице:

// 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();

Ответ 2

Это очень просто с jQuery, в вашем дочернем окне (всплывающее) вызывать объекты родительского окна:

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

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

с opener.window.document мы сообщим jQuery, что объект находится в окне, которое открывает всплывающее окно.

Ответ 3

Взгляните на эту учебную статью: http://www.plus2net.com/javascript_tutorial/window-child3.php

По существу, вам нужно сделать это в форме дочернего окна. Вы передадите такое значение:

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

Где f1 - это идентификатор формы в родительском окне, а p_name - это имя поля в форме.

Как только у вас есть значение в поле родителя, вы можете делать с ним все, что вам нравится.

EDIT:

Чтобы передать информацию дочернему окну, самый простой метод, вероятно, будет через строку запроса, а затем прочитать строку запроса из дочернего окна. В этом случае возможно что-то вроде:

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