2010-02-28 12 views
5

W jaki sposób można wykonać następujące czynności za pomocą jQuery: Otwórz okno wyskakujące, które zwraca wartość do okna nadrzędnego po kliknięciu łącza w oknie podrzędnym, zamknij okno potomne, a następnie uzyskaj wartość rodzic automatycznie przesyła formularz na podstawie zwróconej wartości?Okno jupiterowe Wartość zwracana okna do obiektu nadrzędnego

Zdaję sobie sprawę, że okno dialogowe jQuery jest popularnym rozwiązaniem, ale wymagam wyskakującego okienka, ponieważ zawartość okna musi być dostępna do nawigacji i chcę uniknąć używania elementu iframe w oknie dialogowym jQuery.

Okno wyskakujące służy do zbierania więcej niż jednej wartości, ostatecznie do zwracania jako oddzielony ciąg do rodzica, ale to gromadzenie danych musi nastąpić przed przesłaniem formularza okna nadrzędnego. Jeśli byłby standardowy wzorzec projektowy dla "selektora jednostek", to byłoby to.

To musi działać w IE8, FF3.6, Safari 4 i Chrome 5.

Dzięki Mark

+0

Dlaczego trzeba zawartość okna żeglowna? To nie ma sensu - jeśli chcesz mieć wyskakujące okienko dla formularza jednej strony, dlaczego pozwolisz użytkownikowi nawigować gdzieś indziej? –

+0

Ponieważ okno wyskakujące będzie używane do zbierania więcej niż jednej wartości, ostatecznie będzie zwracane jako rozgraniczony ciąg do rodzica, ale to gromadzenie danych musi nastąpić przed przesłaniem formularza okna nadrzędnego. Jeśli byłby standardowy wzorzec projektowy dla "selektora jednostek", to byłoby to. –

Odpowiedz

6

Oto moje rozwiązanie:

var parent = $(parent.document.body); 
$(parent).find('input#valStore').val(theVal); 
$(parent).find('form#myForm').submit(); 
window.close(); 
6

w oknie przeglądarki nowo otwartego można spróbować czegoś podobnego

$("#mylink").click(function(){ 
     value = /* get some value */ 
     window.opener.$("#myform .somehiddenfield").val(value); 
     window.opener.$("#myform").submit(); 
     window.close(); 
}); 

DISCLAIMER: Nie testowałem tego w żadnej przeglądarce.

+0

Dzięki za odpowiedź, ale "uzyskaj jakąś wartość" jest dla mnie trochę niejasna. Co jeśli ta wartość pochodzi na przykład ze stanu sesji aplikacji? Jak przypisać to w twoim przykładzie? –

+0

Następnie renderuj go w następujący sposób: value = '<% = Session ["mykey"]%>'. Ale jeśli wartość pochodzi ze stanu sesji, dlaczego musiałbyś przekazać ją między oknami? Spodziewałem się, że dostaniesz go z jakiegoś pola wejściowego (pole tekstowe) w oknie podrzędnym. Wtedy byłaby to wartość = $ ("input.sometextbox"). Val(); – Rune

+0

Edytowałem moje oryginalne pytanie, aby je wyjaśnić. Okno wyskakujące służy do przeglądania systemu w celu zebrania różnych odwołań do encji, a następnie przekazania ich z powrotem do rodzica jako oddzielony ciąg znaków. Można to uznać za analogiczne do koszyka na zakupy, w którym wybrane pozycje są przechowywane w stanie sesji. –

Powiązane problemy