Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery][PHP] Walidacja formularza
Forum PHP.pl > Forum > Przedszkole
BillyJr
Witam, mam formularz w php z polami i przyciskami:
  1. <form method="post" action="../action.php" enctype="multipart/form-data" id="contactForm" >

Posiadam też skrypt korzystający z pluginu Validation jQuery:
  1. <script type="text/javascript">
  2. $().ready(function() {
  3. var validator = $("#contactForm").bind("invalid-form.validate", function() {
  4. $("#summary").html("Formularz zawiera błędy (" + validator.numberOfInvalids() + ").");
  5. }).validate({
  6. debug: true,
  7. errorElement: "em",
  8. errorContainer: $("#warning, #summary"),
  9. errorPlacement: function(error, element) {
  10. error.appendTo( element.parent("td").next("td") );
  11. },
  12. success: function(label) {
  13. label.text("ok!").addClass("success");
  14.  
  15. </script>

I sprawa jest taka: jeśli do deklaracji formularza dołączę id="contactForm". To skrypt jest uruchamiany i formularz się waliduje, ale nie wykonywana jest akcja action.php po wciśnięciu przycisku. Jeśli usunę wpis id="contactForm", to akcja jest wykonywana, ale nie ma walidacji. Jestem nowy w PHP, proszę o pomoc, jak temu zaradzić. Dzięki z góry.
Fifi209
Przesyłasz pliki?

Pytanie drugie, czy podpinasz coś pod formularz pod submit, to musisz zwrócić true aby się wysłał.
BillyJr
Tak, docelowo chciałbym wysyłać pliki i w deklaracji widnieje enctype="multipart/form-data". Narazie formularz jest b. prosty, to 3 pola tekstowe i jedno textarea i 2 przyciski:
  1. <form method="post" action="../dev04/case.php" enctype="multipart/form-data" id="contactForm" >
  2. <table class="border" width="550" cellpadding="3" cellspacing="0">
  3. <tr>
  4. <th colspan="3" align="center">Formularz kontaktowy</th>
  5. </tr>
  6. <tr>
  7. <td colspan="3"><div style="height:5px;"></div></td>
  8. </tr>
  9. <tr>
  10. <td class="colone">Imię</td>
  11. <td class="coltwo">*</td>
  12. <td class="colthree"><input class="text" type="text" name="frmFirstname" style="width:98%;" /></td>
  13. <td class="colfour"></td>
  14. </tr>
  15. [...]
  16. <tr>
  17. <td class="colone" colspan="2">&nbsp;</td>
  18. <td class="colthree">
  19. <input type="submit" value="Wyślij" name="submit" class="submit-button"/>
  20. <input type="reset" value="Wyczyść" name="reset"/></td>
  21. <td class="colfour"></td>
  22. </tr>
  23. </table>
  24. </form>
shikamaru88
Bardzo fajny walidator jest w pakiecie JqueryTools http://flowplayer.org/tools/validator/index.html możesz skorzystać z tego. A co do Twojego skryptu to jeśli wkleiłeś go w fizycznej formie to on nie ma prawa zadziałać gdyż nie zamknąłeś klamer po akcji success. Wysypujący skrypt blokuje wysłanie formularza, dlatego po zdjęciu id się wysyła bo jquery go nie łapie.
cronik
Masz gotowe rozwiązanie:

<form method="post" action="../dev04/case.php" enctype="multipart/form-data" >
<table class="border" width="550" cellpadding="3" cellspacing="0">
<tr>
<th colspan="3" align="center">Formularz kontaktowy</th>
</tr>
<tr>
<td colspan="3"><div style="height:5px;"></div></td>
</tr>
<tr>
<td class="colone">Imię</td>
<td class="coltwo">*</td>
<td class="colthree"><input class="text" type="text" name="frmFirstname" style="width:98%;" /></td>
<td class="colfour"></td>
</tr>
[...]
<tr>
<td class="colone" colspan="2"> </td>
<td class="colthree">
<input type="submit" value="Wyślij" name="submit" class="submit-button" id="contactForm" />
<input type="reset" value="Wyczyść" name="reset"/></td>
<td class="colfour"></td>
</tr>
</table>
</form>

Zwróc uwagę, że akcję walidacji uruchamiasz wciskając SUBMIT. Dopiero potem masz akcję ../case.php
BillyJr
Cytat(shikamaru88 @ 13.06.2011, 15:17:03 ) *
Bardzo fajny walidator jest w pakiecie JqueryTools http://flowplayer.org/tools/validator/index.html możesz skorzystać z tego.

Dzięki! Skorzystałem z niego i działa jak należy:) Dzięki jeszcze raz smile.gif
Cytat(shikamaru88 @ 13.06.2011, 15:17:03 ) *
A co do Twojego skryptu to jeśli wkleiłeś go w fizycznej formie to on nie ma prawa zadziałać gdyż nie zamknąłeś klamer po akcji success. Wysypujący skrypt blokuje wysłanie formularza, dlatego po zdjęciu id się wysyła bo jquery go nie łapie.

Skryptu nie wkleiłem w całości, klamry były zamknięte.
Cytat(cronik @ 13.06.2011, 16:36:08 ) *
Masz gotowe rozwiązanie:

Cronik, twoje rozwiązanie nie zadziałało, ale jak pisałem wyżej skorzystałem z innego walidatora i mam już to co chciałem.
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.