Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][AJAX] Walidacji formularza jQuery
Forum PHP.pl > Forum > Przedszkole
przemilke
Witam,

Zabieram się właśnie za walidację formularza w jQuery. Nie wychodzi mi jednak typowy przykład szkoleniowy, a mianowicie nie dochodzi do walidacji i formularz jest zawsze wysyłany. Czy ktoś wie na czym polega mój błąd/przeoczenie. Oto kawałek króciutkiego kodu (Czy wogóle ktoś z Was korzystał z jquery.form.js):

  1. <script type="text/javascript" src="library/jquery.js"></script>
  2. <script type="text/javascript" src="library/jquery.form.js"></script>
  3. <script type="text/javascript">
  4. $(document).ready(function () {
  5. $('#form_test').ajaxForm({
  6. target: '#list',
  7. beforeSubmit: validateForm
  8. });
  9. });
  10.  
  11. function validateForm(){
  12. $("#tekst_error").empty().hide();
  13.  
  14. var imie_klienta = $("#tekst").val();
  15. var errors = 0;
  16.  
  17. if (imie_klienta == null || imie_klienta == '')
  18. {
  19. $("#tekst_error").show().append("Pole Imie jest wymagane");
  20. errors++;
  21. }
  22.  
  23. if (errors > 0)
  24. {
  25. alert ("Znaleziono bledy");
  26. return false;
  27. }
  28. }
  29.  
  30. </head>
  31.  
  32. </form>
  33. <form id="form_test" name="form_test" method="post" action="indor.php">
  34. <input name="tekst" type="text" class="box" id="tekst" size="30" maxlength="50"><br /><p id="tekst_error"></p>
  35. <br /><input class="box" name="btnStep1" type="submit" id="btnStep2" value="Dalej">
  36. </form>
  37. <p id="list">Tutaj powinien pokazać sie zdefiniowany tekst po wysłaniu z indora php</p>
  38. </body>
  39. </html


Biblioteki jquery.js i jquery.form.js implementuje prawidłowo.
A może jest inny sposób walidacji form w jQuery... Chodzi o to, aby formularz nie został wysłany z błędnymi danymi...
Piszcie, dzięki za pomoc

Dopowiem jeszcze, że beforeSubmit ma nie doprowadzić do wysłania formularza, bo zwraca argument false, ale wyglada na to, ze skrypt nie wchodzi wogole w funkcje validateForm() (próbowalem z alertami)...

Składnia jest zgodna z przykładem: http://jetlogs.org/2007/07/22/jquery-input...th-form-plugin/
nexis
Chyba jednak coś namieszałeś, bo mi jedynie po poprawkach kosmetycznych działa:

index.html
  1. <?php
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4.  <head>
  5. <title>Walidacja</title>
  6. <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
  7. <script type="text/javascript" src="http://jqueryjs.googlecode.com/svn/trunk/plugins/form/jquery.form.js"></script>
  8. <script type="text/javascript" src="validate.js"></script>
  9.  </head>
  10.  <body>
  11. <span id="tekst_error"></span>
  12. <span id="list"></span>
  13. <form id="form_test" method="post" action="skrypt.php"> 
  14.  <input type="text" name="tekst" id="tekst" /><br />
  15.  <input type="submit" id="submit" value="Dalej" />
  16. </form>
  17.  </body>
  18. </html>
  19. ?>


validate.js
  1. <?php
  2. function validateForm(){
  3.  $("#tekst_error").empty();
  4.  var imie_klienta = $("#tekst").val();
  5.  var errors = 0;
  6.  
  7.  if (imie_klienta == null || imie_klienta == "") {
  8. $("#tekst_error").text("Pole Imie jest wymagane");
  9. errors++;
  10.  }
  11.  
  12.  if (errors > 0) {
  13. alert ("Znaleziono bledy");
  14. return false;
  15.  }
  16. }
  17.  
  18. $(document).ready(function(){
  19.  $('#form_test').ajaxForm({
  20. beforeSubmit: validateForm
  21.  });
  22. });
  23. ?>


Możesz to też śmiało załatwić sprawę bez dodatku jQuery Form:

  1. <?php
  2. $(document).ready(function(){
  3.  $("#form_test").submit(function(){
  4. var imie = $("#tekst").val();
  5. if (null == imie || "" == imie) {
  6.  $("#tekst_error").text("Blad!");
  7.  return false;
  8. }
  9.  });
  10. });
  11. ?>
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.