2010-12-03 4 views
12

я следующий HTMLпередачи данных между родительским окном и окном ребенка всплывающее окно с JQuery

<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; 
}); 

мне нужно, чтобы быть в состоянии флага ЛЮБОГО PartyId поле ввода с классом = «PartyLookup», чтобы он изменил DOM и включил изображение рядом с полем ввода. Всплывающее окно возвращает данные для заполнения как скрытых, так и текстовых полей, но так как click() является общим, мне нужно передать ему идентификатор поля ввода. Я не знаю, как это сделать. Какие-либо предложения?

+1

@micheel даже во всплывающем окне у вас будет доступ к полному dom ,, – kobe 2010-12-03 22:07:15

ответ

22

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

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

Посмотрите на эту статью: учебное 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; 
}); 
+0

Да, я это понимаю. Тем не менее, мне нужно передать идентификатор элемента, что текущий $ (это) связан с дочерним окном, поэтому, когда я возвращаю значения, я знаю «p_name» для элементов формы. – mhenry 2010-12-03 22:31:56

+0

О, я вижу. Я обновил свой ответ с новым предложением. – Ender 2010-12-03 22:36:18

4

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

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

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

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

Смежные вопросы