Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [javascript] Problem z wartością pola w formularzu
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Quester
Witam serdecznie !

Biedzę się nad problemem już kilka godzin, a na forum nie odnalazłem rozwiązania mojego problemu, więc proszę Was o pomoc:

Mam dwa pliki:

1. W pierwszym formularz nadrzędny:
  1. <form action="edit.php" method="post" id="form1" name="form1">
  2. <input type="text" name="name" id="name" disabled="disabled">
  3. ...
  4. </form>


2. W drugim pliku formularz podrzędny:
  1. <form action="java script:window.opener.document.forms.form1.elements.name.value=go.name.value" id="go" onsubmit="window.close()">
  2. <input type="text" name="name" id="name">


Planowane działanie jest następujące: W pliku 1 pojawia się formularz ze wszystkimi polami oznaczonymi jako disabled oraz link do formularza podrzędnego. W pliku 2 formularz podrzędny który po uzupełnieniu wartości przekaże je do odpowiednich pól formularza nadrzędnego. W obecnej, przytoczonej powyżej postaci działa to tylko w IE natomiast w FireFox i Opera nie chce funkcjonować.
Będę wielce zobowiązany za wskazanie rozwiązania problemu ponieważ z pewnych względów muszę zrobić taką właśnie dziwaczną kombinację.
Z góry dziękuję za każdą wskazówkę.

UPDATE:

Udało mi się samodzielnie znaleźć rozwiązanie problemu.

Poniżej podaję rozwiązanie dla tych, którym przyjdzie do głowy taka sama "głupota" jak mnie smile.gif

Plik 1: funkcja change() w sekcji HEAD wywoływana w pliku 2 + formularz o id="form1"

  1. function change(NewValue, InputID)
  2. {
  3. var t = document.form1;
  4. t.elements[InputID].value = NewValue;
  5. }



Plik 2:
  1. <body onunload="window.opener.parent.change(document.forms.under.elements.val.value, 0);">
  2. <form action="java script:window.close()" id="form">
  3. <input type="text" name="val" id="val">
  4. </form>


Nie jestem przekonany co do poprawności tego rozwiązania biorąc pod uwagę słabą znajomość JS ale takie rozwiązanie działa zarówno pod IE jak i FF i Opera.
gekon
Po pierwsze: jeżeli formularze mają id to nie łatwiej jest wyłuskiwać je własnie po id?

  1. window.opener.document.getElementById('form1');


Po drugie: zainteresuj się przechwytywaniem zdarzeń, bo aż strach patrzeć na ten Twój kod. Albo skorzystaj z jakiegoś frameworka dla JS, praca stanie się przyjemniejsza.
Quester
Dzięki za wskazówki. Jako początkujący bardzo doceniam, że zechciałeś naprowadzić mnie na lepszy trop smile.gif

Witam... jednak poproszę o dodatkowe wskazówki w postaci naprowadzenia mnie na właściwy tok myślenia, bo mimo tego, że szperam w sieci w poszukiwaniu sensownych materiałów dla laika, to nie mogę sobie dać rady... problem polega na tym, że moje nieprofesjonalne rozwiązanie nie działa w IE7 sad.gif Chciałbym skorzystać z JS jednorazowo, więc interesuje mnie najprostsze możliwe rozwiązanie ale bazujące na własnych funkcjach (bez framework'ów)
Pomóżcie proszę... z góry thx.
gekon
Po ang: http://onlinetools.org/articles/unobtrusiv...t/chapter4.html.

Dodam jeszcze, że możesz zrobić funkcję, która będzie obsługiwać wysyłanie formularza i zamykanie pop-upa; w action natomiast ustaw alternatywę dla tych którzy nie mają JS (są tacy). Może wyglądać tak: User wysyła formularz, a ty odsyłasz go do strony, z której otworzył pop-upa, wstawiając to co wpisał w odpowiednie miejsce.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.