Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawdzanie formularza, Zatrzymanie wysyłania danych z formularza
pl65
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 17.02.2008
Skąd: Hrubieszów

Ostrzeżenie: (0%)
-----


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.

Ten post edytował pl65 19.03.2008, 11:19:53


--------------------
Przemek :)
lisnet.info
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Kod
...onsubmit="return check_valid(this);"...

a check_valid ma zwraca true gdy nie ma bledow


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Roly
post
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 7
Dołączył: 8.12.2003
Skąd: Andrychów

Ostrzeżenie: (0%)
-----


Polecam poczytać sobie http://wortal.php.pl/wortal/artykuly/po_st...ciu_javascriptu


--------------------
adminvps.pl
Go to the top of the page
+Quote Post
pl65
post
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 17.02.2008
Skąd: Hrubieszów

Ostrzeżenie: (0%)
-----


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)"

Ten post edytował pl65 19.03.2008, 11:28:01


--------------------
Przemek :)
lisnet.info
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 09:23