Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: walidacja formularza
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
bogostradamus
Witam.
Próbuje zrobić qiuz w php by zliczał mi wyniki i podawał je na drugiej stronie metodą $_POST. Nawet mi się udało. Tylko, że jak się nie zaznaczy żadnej odpowiedzi z możliwej grupy radio, wyskakuje error log undefined index. Toteż pytalem w dziale przedszkole http://forum.php.pl/index.php?showtopic=140730&hl= jak to zrobic w php i powiedzieli ze moge to zrobic jako form validation w javascript.
No i to kolejny problem bo nie wiem jak sobie z tym poradzic. Wkleję kod a może ktoś mi doradzi co robię nie tak:

<script type="text/javascript">

function przetwarzaj_dane() {
var brakuje_danych=false;
var napis="";
if (document.forms.formularz.p1.value == "!isset"){
napis += "Pytanie 1\n"
brakuje_danych=true;
}
if (!brakuje_danych)
return true;
else {
alert ("Prosze odpowiedzieć na następujące pytania:\n" + napis);
return false;
}
}
</script>

<form name"formularz" action="wynik.php" method="post" onsubmit="return przetwarzaj_dane();">
<p class="space"></p>
1. What do you ..................... in your spare time?<BR>
<input TYPE="radio" name="p1" value="0"> like do<BR>
<input TYPE="radio" name="p1" value="1"> like doing<BR>
<input TYPE="radio" name="p1" value="2"> like to doing<BR>
<input TYPE="radio" name="p1" value="3"> doing<BR>
<input type="submit" name="wyslij" class="przycisk" value=" Oblicz Wynik! " onclick="przetwarzaj_dane()">
</form>

Pytań w formularzu mam 20, ale skróciłem do przykładowego jednego
czy to problem że źle odnosze sie do pustej wartości radio button?
Jak się do niej odnieść?
document.forms.formularz.p1.value == "!isset"? albo document.forms.formularz.p1.!isset; lub document.forms.formularz.p1.value == "" questionmark.gif
Próbowałem rożnych możliwości i brakuje mi pomysłów
A moze mam cos w kodzie walnięte i nie moge tego dostrzec
rytek
Proszę, wrzucaj kod w znaczniki odpowiednie.

Co do walidacji:

[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2.  
  3. function przetwarzaj_dane() {
  4. var brakuje_danych=false;
  5. var napis="";
  6. if (!document.forms.formularz.p1.[0].checked AND !document.forms.formularz.p1.[1].checked AND !document.forms.formularz.p1.[2].checked AND !document.forms.formularz.p1.[3].checked){
  7. napis += "Pytanie 1\n";
  8. brakuje_danych=true;
  9. }
  10.  
  11. if (!document.forms.formularz.p2.[0].checked AND !document.forms.formularz.p2.[1].checked AND !document.forms.formularz.p2.[2].checked AND !document.forms.formularz.p2.[3].checked){
  12. napis += "Pytanie 2\n";
  13. brakuje_danych=true;
  14. }
  15.  
  16. ... i tak dalej
  17.  
  18.  
  19. if (!brakuje_danych)
  20. return true;
  21. else {
  22. alert ("Prosze odpowiedzieć na następujące pytania:\n" + napis);
  23. return false;
  24. }
  25. }
  26. </script>
[JAVASCRIPT] pobierz, plaintext


Nie wiem czy to będzie działać dobrze, ale wydaje mi się, że tak.
bogostradamus
Niestety nie działa. Przeskakuje na inną stronę z error logiem i zliczaniem wyników
rytek
Mam nadzieję, że nie skopiowałeś bezmyślnie, tylko zrobiłeś dla całości?

//EDYTKA:

Mój błąd.
[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2.  
  3. function przetwarzaj_dane() {
  4. var brakuje_danych=false;
  5. var napis="";
  6. if (!document.forms.formularz.p1[0].checked && !document.forms.formularz.p1[1].checked && !document.forms.formularz.p1[2].checked && !document.forms.formularz.p1[3].checked){
  7. napis += "Pytanie 1\n";
  8. brakuje_danych=true;
  9. }
  10.  
  11. if (!document.forms.formularz.p2[0].checked && !document.forms.formularz.p2[1].checked && !document.forms.formularz.p2[2].checked && !document.forms.formularz.p2[3].checked){
  12. napis += "Pytanie 2\n";
  13. brakuje_danych=true;
  14. }
  15.  
  16.  
  17. if (!brakuje_danych)
  18. return true;
  19. else {
  20. alert ("Prosze odpowiedzieć na następujące pytania:\n" + napis);
  21. return false;
  22. }
  23. }
  24. </script>
[JAVASCRIPT] pobierz, plaintext


Teraz powinno być ok.
bogostradamus
Niestety nie działa w dalszym ciągu. Nie wklejałem bezmyślnie. Zanim poprawiłeś również próbowałem z && zamiast AND, i p1.[0] zamieniałem na p1[0], próbowałem również p1.item(0) i nic...
rytek
Heh, nie zauważyłem, że nie do końca dobrze zrobiłeś początek smile.gif
[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2.  
  3. function przetwarzaj_dane() {
  4. var brakuje_danych=false;
  5. var formularz=document.forms[0];
  6. var napis="";
  7. if (!formularz.p1[0].checked && !formularz.p1[1].checked && !formularz.p1[2].checked && !formularz.p1[3].checked){
  8. napis += "Pytanie 1\n";
  9. brakuje_danych=true;
  10. }
  11.  
  12. if (!formularz.p2[0].checked && !formularz.p2[1].checked && !formularz.p2[2].checked && !document.forms.formularz.p2[3].checked){
  13. napis += "Pytanie 2\n";
  14. brakuje_danych=true;
  15. }
  16.  
  17.  
  18. if (!brakuje_danych)
  19. return true;
  20. else {
  21. alert ("Prosze odpowiedzieć na następujące pytania:\n" + napis);
  22. return false;
  23. }
  24. }
  25. </script>
[JAVASCRIPT] pobierz, plaintext



I w formularzu zmień z:
  1. <input type="submit" name="wyslij" class="przycisk" value=" Oblicz Wynik! " onclick="przetwarzaj_dane()">

na:
  1. <input type="submit" name="wyslij" class="przycisk" value=" Oblicz Wynik! ">


Bo będzie 2 razy walidowało.
bogostradamus
No i pięknie działa exclamation.gif!
Wielkie dzięki za pomoc i za cierpliwość.
Pozdrawiam
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.