Autor Zpráva
Prkny
Profil
Ahoj,

na stránce mám předem neupřesněný počet formulářů.
Potřebuji formuláře na které se klikne, uložit do mysql a bez reloadu. Po uložení zobrazit potvrzení o uložení. Skript jsem použil z tutorialu z webu, ale byl určený pouze pro jeden formulář.
zde je ukázka: www.prkny.707.cz/ajax_save_form/index.html

Nyní mi správně funguje pouze první formulář. U ostatních formulářů dojde k reloadu a zustanou na userInfo.php. Pravděpodobně je to způsobené stejným ID formuláře.
Nevím jak to upravit tak, aby to chodilo pro všechny formuláře.

kod html (více viz ukázka)
<form id="myForm" action="userInfo.php" method="post">
Zbozi AB102, 
Pocet : <input type="text" name="pocet" />
<input type="hidden" name="id" value='5000' />
<button id="sub">Ulozit</button>
</form>


<form id="myForm" action="userInfo.php" method="post">
Zbozi AB103, 
Pocet : <input type="text" name="pocet" />
<input type="hidden" name="id" value='5000' />
<button id="sub">Ulozit</button>
</form>


<form id="myForm" action="userInfo.php" method="post">
Zbozi AB104, 
Pocet : <input type="text" name="pocet" />
<input type="hidden" name="id" value='5000' />
<button id="sub">Ulozit</button>
</form>


<form id="myForm" action="userInfo.php" method="post">
Zbozi AB105, 
Pocet : <input type="text" name="pocet" />
<input type="hidden" name="id" value='5000' />
<button id="sub">Ulozit</button>
</form>

<span id="result"></span>


kod javascript (my_script.js)
$("#sub").click( function() {
 $.post( $("#myForm").attr("action"), 
         $("#myForm :input").serializeArray(), 
         function(info){ $("#result").html(info); 
   });
 clearInput();
});
 
$("#myForm").submit( function() {
  return false;    
});
Str4wberry
Profil
Ano, problém je v tom, že přes identifikátor (název s # na začátku) zaměříte pouze jeden jediný element.

Pro zajaxování všech formulářů můžete zaměřit přímo element form nebo formulářům přidat např. třídu ajax a zaměřit je podle této třídy.

Jinak za odeslání formuláře bývá lepší považovat událost submit u formuláře, protože kliknutí na odesílací tlačítko je jen jedním ze způsobů, jak formulář odeslat.
Prkny
Profil
Str4wberry:
Děkuji za odpověď. Princip odpovědi jsem pochopil.
Bude lepší formulářům přidat vlastní třídu, jelikož je možné, že by se na stránce mohl objednivt zcela jiný formulář (třeba newsletter).
Html upravím, ale bohužel potřebuji pomoci s tím javascriptem, jelikož ten je pro mě zapadlá vesnice na jihu Španělska (vím že tam je, ale nevím kudy se tam dostat a co bych tam měl dělat :-) ).

Html
<form id="myForm" action="userInfo.php" method="post" class="trida_ajax_form">
Zbozi AB102, 
Pocet : <input type="text" name="pocet" />
<input type="hidden" name="id" value='5000' />
<input type="submit" value="Ulozit">
</form>
 
 
<form id="myForm" action="userInfo.php" method="post"  class="trida_ajax_form">
Zbozi AB103, 
Pocet : <input type="text" name="pocet" />
<input type="hidden" name="id" value='5000' />
<input type="submit" value="Ulozit">
</form>
 
 
<form id="myForm" action="userInfo.php" method="post"  class="trida_ajax_form">
Zbozi AB104, 
Pocet : <input type="text" name="pocet" />
<input type="hidden" name="id" value='5000' />
<input type="submit" value="Ulozit">
</form>
 
 
<form id="myForm" action="userInfo.php" method="post"  class="trida_ajax_form">
Zbozi AB105, 
Pocet : <input type="text" name="pocet" />
<input type="hidden" name="id" value='5000' />
<input type="submit" value="Ulozit">
</form>
 
<span id="result"></span>
_es
Profil
Prkny:
Skript jsem použil z tutorialu z webu
Asi si ho použil nejako nesprávne, čo napríklad s funkciou clearInput, kde je?

Html upravím, ale bohužel potřebuji pomoci s tím javascriptem
A s čím konkrétnym, na problémy v [#1] ti už bolo poradené a neopravil si to podľa rád.
Okrem toho, nie je dobré dávať formulárovým prvkom name="id".
A nedávaj do odpovede servera kód JavaScriptu, síce to jQuery voľajako spustí, no nie je to dobrý nápad.
Prkny
Profil
_es:
Asi si ho použil nejako nesprávne, čo napríklad s funkciou clearInput, kde je?
děkuji za upozornění

A s čím konkrétnym, na problémy v [#1] ti už bolo poradené a neopravil si to podľa rád.
Této odpovědi nerozumím, že jsem neopravil podľa rád. Jak jsem psal, HTML jsem opravil (dosadil třídu, button zmenil na submit). A dále jsem napsal že nerozumím javascriptu zda by někdo nepomohl s opravou. Nevím jak více bych to srozumitelně napsal ...

Okrem toho, nie je dobré dávať formulárovým prvkom name="id".
souhlas, toto bylo psano jako rychlí příklad

A nedávaj do odpovede servera kód JavaScriptu, síce to jQuery voľajako spustí, no nie je to dobrý nápad.
kam ho mám dávat do indexu? jak ho spustím ?
_es
Profil
Prkny:
Této odpovědi nerozumím
Formuláre majú predsa stále totožné id a aj sa ne (vlastne len na prvý z nich) cez to id stále odkazuješ.

Odpoveď servera obsahuje <script>..., nahraď to za nejakú zmysluplnú odpoveď (bez JS kódu), ktorú ďalej spracuješ.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: