Pomoc - Szukaj - U¿ytkownicy - Kalendarz
Pe³na wersja: Sprawdzanie formularza
Forum PHP.pl > Forum > Po stronie przegl±darki > JavaScript
pl65
Zrobiłem JavaScript który sprawdza czy dane są wprowdzone prawidłow. Niestety jak wykryje błąd wyświetla okienko po czym jak się kliknie ok wysyła formularz, mimo że ma właśnie ten proces zatrzymać. Spójrzcie i doradźcie co zrobić żeby to zaczeło poprawnie działać.

Kod java script:
  1. <?php
  2. echo'<script Language="JavaScript1.2" src="test.js"></SCRIPT>
  3. <script Language="JavaScript1.2">
  4. function check_valid(form) {
  5. var error = "";
  6. error += verify_tytul(form.tytul.value);
  7. error += verify_tresc(form.tresc.value);
  8. error += verify_autor(form.autor.value);
  9. error += verify_email(form.email.value);
  10. if (error != "") {
  11. alert(error);
  12. return false;
  13. }
  14. if (error == "")
  15. {return false;}
  16. }
  17. </SCRIPT>
  18. '
  19. ?>

W/w dane są oczywiście wyświetlne w sekcji head. W pliku włączonym są funkcje sprawdzające poprawnośc danych. wyglądają one tak:
Kod
function verify_tytul (strng) {
     var error = "";
     if (strng == "")
     {
         error = "Nie wprowadzono tytułu.\n";
     }
     var illegalChars = /\W/; //dozwolone znaki
     if ((strng.length <3) || (strng.length >100)) {
         error = "Tytuł musi mieć od 3 do 100 znaków.\n";
         }
     else if (illegalChars.test(strng)) {
         error = "Tytuł zawiera niedozwolone znaki.\n";
     }
     return error;
}

function verify_tresc (strng) {
     var error = "";
     if (strng == "")
     {
         error = "Nie wprowadzono treści.\n";
     }
     var illegalChars = /\W/; //dozwolone znaki
     if ((strng.length <3) || (strng.length >300)) {
         error = "Treść musi mieć od 3 do 300 znaków.\n";
         }
     else if (illegalChars.test(strng)) {
         error = "Treść zawiera niedozwolone znaki.\n";
     }
     return error;
}

function verify_autor (strng) {
     var error = "";
     if (strng == "")
     {
         error = "Nie wprowadzono nazwy użytkownika.\n";
     }
     var illegalChars = /\W/; //dozwolone znaki
     if ((strng.length <3) || (strng.length >20)) {
         error = "Pole autor musi mieć od 3 do 300 znaków.\n";
         }
     else if (illegalChars.test(strng)) {
         error = "Pole autor zawiera niedozwolone znaki.\n";
         error = "Pole autor zawiera niedozwolone znaki.\n";
     }
     return error;
}

function verify_email (strng) {
     var error = "";
     if (strng == "")
     {
         error = "Nie wprowadzono adresu e-mail.\n";
     }
     var emailFilter=/^.+@+\..{2,3}$/;
     if (!(emailFilter.test(strng))) {
         error = "Proszę wprowadzić prawidłowy e-mail.\n";
         }
     else {
     //sprawdzanie czy e-mail nie ma niedozwolonych znaków
         var illegalChars =/[\(\)\<\>\,\;\:\\\"\[\]]/
         if (strng.match(illegalChars)) {
         error = "Adres e-mail zawiera niedozwolone znaki.\n";
         }
     }
     return error;
     }


Kod formularza:
  1. <?php
  2. echo('<form action="'.$_SERVER["PHP_SELF"].'" method="POST" onSubmit="check_valid(this)">
  3. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  4. <tr valign="middle"> 
  5. <td width="40%"><b>Tytuł: </b></td>
  6. <td width="60%"><input type="text" name="tytul" size="30" value="'.$tytul.'" maxlength="30"></td>
  7. </tr>
  8. <tr valign="middle" > 
  9. <td width="40%"><b>Treść komentarza:</b></td>
  10. <td width="60%">
  11. <textarea name="tresc" cols="38" rows="6" >'.$tresc.'</textarea>
  12. <input type="hidden" name="akcja" value="dodajkom"></td>');
  13. echo"<input type=\"hidden\" name=\"id_news\" value=\"$id_blog\">";
  14. echo('<tr valign="middle"> 
  15. <td width="40%"> <b>Autor: </b></td>
  16. <td width="60%"><input type="text" name="autor" size="15" value="'.$autor.'" maxlength="10"></td>
  17. </tr>
  18. <tr valign="middle" > 
  19. <td width="40%"> e-mail: </td>
  20. <td width="60%"><input type="text" name="email" size="15" value="'.$email.'" maxlength="30"></td>
  21. </tr>
  22.  <tr valign="middle" > 
  23. <td width="40%">
  24. <input type="reset" value="Kasuj">
  25. <input type="submit" value="Wyślij" /></td>
  26. <td width="60"><b>Pogrubione pola są obowiązkowe!</b></td>
  27. </tr>
  28. </table>
  29. </form>');
  30. ?>



Moje błędy wynikają z tego na pewno że nie za dobrze znam ten język.
nospor
Kod
...onsubmit="return check_valid(this);"...

a check_valid ma zwraca true gdy nie ma bledow
Roly
Polecam poczytaæ sobie http://wortal.php.pl/wortal/artykuly/po_st...ciu_javascriptu
pl65
Tak ma zwracać wartość: return true.
Zaraz to dodam do postu.

Dzięki Roly za podesłanie linka smile.gif. Teraz już wszystko działa, dodałem tylko onSubmit=" return check_valid(this)"
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.