Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [javascript] Sprawdzanie formularza
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
ddzkm
Witam!

Mam formularz i skrypt JS, który sprawdza, czy wymagane pola są wypełnione czy nie (w tym drugim przypadku blokuje wysyłanie formularza do serwera). Niestety zupełnie nie wiedzieć dlaczego po wpisaniu dowolnej wartości w polu "imię" skrypt kończy pracę i wysyła formularz, nawet w przypadku gdy pozostałe pola nie są wypełnione, w innym przypadku zaś o dziwo działa poprawnie. Co tu może być nie tak? Dodam, ze próbowałem kombinować z jednym zbiorowym warunkiem ("||") ale efekt też był ten sam...

Skrypt:

  1. <script TYPE="text/javascript">
  2. <!--
  3. function empty_check()
  4. {
  5. var form_data = document.forms["contact"];
  6.  
  7. if (form_data.username.value == "")
  8. {
  9. alert("Aby wysłać wiadomość musisz wypełnić wszystkie pola formularza!");
  10. return false;
  11. }
  12.  
  13. if (form_data.e-mail.value == "")
  14. {
  15. alert("Aby wysłać wiadomość musisz wypełnić wszystkie pola formularza!");
  16. return false;
  17. }
  18.  
  19. if (form_data.subject.value == "")
  20. {
  21. alert("Aby wysłać wiadomość musisz wypełnić wszystkie pola formularza!");
  22. return false;
  23. }
  24.  
  25. if (form_data.text.value == "")
  26. {
  27. alert("Aby wysłać wiadomość musisz wypełnić wszystkie pola formularza!");
  28. return false;
  29. }
  30.  
  31.  
  32. alert("Aby wysłać wiadomość musisz wypełnić wszystkie pola formularza!");
  33. return false;
  34.  
  35. return true;
  36. }
  37. //-->


Formularz:

  1. <FORM NAME="contact" ACTION="send.php" METHOD="post">
  2.  
  3. <TABLE CELLSPACING="5" CELLPADDING="0" STYLE="border: 1px solid #AEAEAE;">
  4. <TR>
  5. <TD ALIGN="left">
  6. Twoje imię, nazwisko lub pseudomin:<FONT COLOR="#FF0000">*</FONT>
  7. </TD>
  8. <TD ALIGN="left">
  9.  
  10. <INPUT TYPE="text" NAME="username" VALUE="">
  11.  
  12. </TD>
  13. </TR>
  14. <TR>
  15. <TD ALIGN="left">
  16. Twój adres e-mail:<FONT COLOR="#FF0000">*</FONT>
  17. </TD>
  18. <TD ALIGN="left">
  19.  
  20. <INPUT TYPE="text" NAME="e-mail" VALUE="">
  21.  
  22. </TD>
  23. </TR>
  24. <TR>
  25. <TD ALIGN="left">
  26. Temat wiadomości:<FONT COLOR="#FF0000">*</FONT>
  27. </TD>
  28. <TD ALIGN="left">
  29.  
  30. <SELECT NAME="subject"><OPTION VALUE="" SELECTED>[ wybierz temat ]</OPTION>
  31. <OPTION VALUE="1">Temat 1</OPTION>
  32. <OPTION VALUE="2">Temat 2</OPTION>
  33.  
  34. </TD>
  35. </TR>
  36. <TR>
  37. <TD ALIGN="left">
  38. Treść wiadomości:<FONT COLOR="#FF0000">*</FONT>
  39. </TD>
  40. <TD ALIGN="left">
  41. <TEXTAREA NAME="text" COLS="39" ROWS="10"></TEXTAREA>
  42. </TD>
  43. </TR>
  44. <TR>
  45. <TD COLSPAN="2"><HR>
  46. </TD>
  47. </TR>
  48. <TR>
  49. <TD COLSPAN="2" ALIGN="center">
  50.  
  51. <INPUT TYPE="submit" NAME="button" VALUE="Wyślij wiadomość" onclick="return empty_check()">
  52.  
  53. </TD>
  54. </TR>
  55. </FORM>
zzeus
A co mówi konsola błędów w przeglądarce ?
ddzkm
Problem w tym, że na ten temat nic (sprawdzałem kilka razy)... sad.gif

PS. Czy wartości Value ustawione na wartość "" mogą mieć tu jakieś znaczenie?
glh
Zrob tak:
1. Zmien nazwe pola (w formularzu, parametr name)e-mail na email,
2. Zmien typ przycisku w formularzu z submit na button,
3.W zdarzeniu onclick tego przycisku wpisz tylko empty_check()
4. I najwazniejsze czyli funkcja empty_check (bo bez urazy, ale ta twoja to straszna kaszana):
  1. function empty_check()
  2. {
  3. pustych=0;
  4. fd=document.forms['contact'];
  5.  
  6. if (fd.username.value=="") pustych++;else
  7. if (fd.email.value=="") pustych++;else
  8. if (fd.subject.value =="") pustych++;else
  9. if (fd.text.value=="") pustych++;
  10.  
  11. if (pustych==0) fd.submit();else
  12. {
  13. alert('Wypelnij wszystkie pola!');
  14. }
  15. }
ddzkm
Po małej modyfikacji działa (nie mogłem niestety zmienić przycisku na "button", bo przestawała działać walidacja w PHP biggrin.gif ). A oto wersja działająca:

  1. function empty_check()
  2. {
  3. pustych=0;
  4.  
  5. fd=document.forms["contact"];
  6.  
  7. if (fd.username.value=="") pustych++;
  8.  
  9. else if (fd.email.value=="") pustych++;
  10.  
  11. else if (fd.subject.value =="") pustych++;
  12.  
  13. else if (fd.text.value=="") pustych++;
  14.  
  15. if (pustych==0) return true;
  16.  
  17. else
  18. {
  19. alert("Aby wysłać wiadomość musisz wypełnić wszystkie pola formularza!");
  20. return false;
  21. }
  22. }


Zaś w formularzu zgodnie z podpowiedzią zmieniłem jedynie "e-mail" na "email".

Wielkie dzięki za pomoc tongue.gif
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.