Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][JavaScript] Jeden przycisk, wysłanie dwóch formularzy
Forum PHP.pl > Forum > Przedszkole
in5ane
Witam, czy jest możliwość wcisnąć jeden submit w jednym formularzu, a zostaną wysłane dwa różne formularze?

Dajmy na to mamy coś takiego:
  1. <form action="#">
  2. <inputy srutyty....
  3. <input type="submit" name="send" />
  4. </form>
  5.  
  6. <form action="#">
  7. <select, <input bla bla bla....
  8. </form>


Czy jest możliwość, gdy kliknę pierwszy submit, aby wysłało mi oba formularze?
Ogólnie chodzi o to, żeby do skryptu wysyłało mi dane z obu formularzy, ale niestety pomiędzy tymi dwoma formularzami jest spora część strona, na której są inne formularze (np. logowania). Proszę o pomoc.
nospor
1) Nie, nie jest to możliwe
2) Masz dziwną strukturę strony, skoro dane z jednego forma musisz robijać na dwa formy
3) Jesli opierasz działanie strony na js, to po wcisnieciu submit pobierz dane z forma2, przypisz je do odpowiednich ukrytych pól w form1, a potem dopiero wyślij form1.
in5ane
Po prostu w logo mam inputa z treścią. A dalej na stronie w panelu bocznym mam selecta. I chodzi o to, że jak ktoś sobie np. zaznaczy województwo mazowieckie i wpisz sobie w inpucie tam koło logo i kliknie szukaj, to żeby brało mu też pod uwagę z tego selecta. A po prostu w kodzie pomiędzy tymi formularzami jest jeszcze formularz logowania.

Troszeczkę nie rozumiem tego pobrania przez JS.
Dajmy na to:
  1. <input type="submit" value="szukaj" onclick="getOtherInfo();" />

I do tego funkcja JS:
[JAVASCRIPT] pobierz, plaintext
  1. getOtherInfo() {
  2. // i tutaj np. coś takiego?
  3. var state = form['state'].value; // <-- to jest zmienna z drugiego formularza
  4. //i powiedzmy to już mam te zmienna z tego drugiego formularza i co dalej, żeby przesłać zmienne z tego pierwszego i te pobraną z tego drugiego?
  5. }
[JAVASCRIPT] pobierz, plaintext
b4rt3kk
Tak po prawdzie to myślę, że nawet wysłanie formularza nie jest konieczne. Wszystkie wartości pól możesz pobrać za pomocą JS i przesłać je dalej do kolejnej podstrony, która odpowiada za wyszukiwanie.
in5ane
Proponujesz by zrobić, że wciśnięcie Submita po prostu żeby tylko uruchomiło funkcję JS, która pobierze wszystkie dane i już z tej funkcji po prostu zrobić przekierowanie z pobranymi danymi do skryptu?
b4rt3kk
Cytat(in5ane @ 10.01.2013, 16:45:46 ) *
Proponujesz by zrobić, że wciśnięcie Submita po prostu żeby tylko uruchomiło funkcję JS, która pobierze wszystkie dane i już z tej funkcji po prostu zrobić przekierowanie z pobranymi danymi do skryptu?


Sądzę, że tak będzie najlepiej.
in5ane
No to mam dalej pytania. Zrobiłem coś takiego:
[JAVASCRIPT] pobierz, plaintext
  1. function sendForm() {
  2. var form1 = document.getElementById('form1');
  3. var search = form1.search.value;
  4. var form2 = document.getElementById('form2');
  5. var categories = form2.categories.value;
  6. var state = form2.state.value;
  7. }
[JAVASCRIPT] pobierz, plaintext

Z tym, że jak próbuję pobierać categories i state to nie działa (samo search z pierwszego formularza działa). Myślę, że problem jest w tym, że i categories i state są multicheckboxami, tzn. np.:
  1. <input type="checkbox" name="state[]" value="1" class="checkbox_p" /> dolnośląskie<br />
  2. <input type="checkbox" name="state[]" value="2" class="checkbox_p" /> kujawsko-pomorskie<br />
  3. <input type="checkbox" name="state[]" value="3" class="checkbox_p" /> lubelskie<br />

Proszę powiedzcie mi, jak to rozgryźć.
b4rt3kk
Taki przykład:

  1. var state = new Array();
  2.  
  3. $('.checkbox_p').each(function() {
  4. if ($(this).is(':checked') == true) [
  5. state[] = $(this).val();
  6. }
  7. });
in5ane
A mam jeszcze jedno pytanie. Teraz tak po prostu coś sprawdzam. Chce sobie wysłać dane z checkbox'ów. No i jak wysyłam i odbieram je w kontrolerze, to mam cały czas:
Kod
array (size=1)
  0 => string 'undefined' (length=9)

Mój kod w kontrolerze to po prostu:
  1. var_dump($this->input->post('state'));

Co jest nie tak? Kombinuje i krew zalewa...

Dodam, że jakby było w input checkbox name: state1, state2, state3 itd... to by mi działało, ale ja chce to jako tablice przesłać. Jak później będę miał filtrować dane z bazy?
b4rt3kk
Nie podałeś w jaki sposób je wysyłasz?
in5ane
Jak to nie podawałem? Nie rozumiem? No w jaki? Postem normalnie, o to pytasz?

Odstawmy teraz to JavaScript na bok.
Pytam o samo przesyłanie danych z checkbox'ów.
b4rt3kk
Tak, o to. Ale oczywiście owe checkboxy są zaznaczone? Wiesz na pewno o tym, że niezaznaczony checkbox nie tylko nie przesyła wartości, ale i nie tworzy zmiennej POST?
in5ane
Mam tych checkbox'ów state 16:
  1. <input type="checkbox" name="state[]" value="1" />
  2. <input type="checkbox" name="state[]" value="2" />
itd... do 16
Poza tym mam pole:
  1. <input type="text" name="search" />

I teraz w kontrolerze daję:
  1. echo $this->input->post('search'); // to działa
  2. echo $this->input->post('state'); // to nie działa (jest napis: array)

A gdy daję
  1. var_dump($this->input->post('state');
to dostaję (w zależności ile zaznaczę checkbox'ów):
Kod
array (size=1)
  0 => string 'undefined' (length=9)



@edit:

K******rwa... patrzcie! Oczy mi wyszły na wierzch.
Czy to mógł być problem, że było coś takiego?
  1. onclick="this.value=check2('state_all')"

Problem w tym, że muszę mieć tego onclicka, ale z nim nie działa, a bez niego działa.
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.