Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] Sprawdzenie pól radio przed wysłaniem
Forum PHP.pl > Forum > Po stronie przeglądarki
8_pasarzer_NOSTROMO
Witam

Mam prosty formularz, i chciałbym w nim wymusić obowiązkowe zaznaczenie dwóch pól typu RADIO. Jeśli użytkownik nie wybierze to musi otrzymać odpowiedni komentarz.

  1. <script type="text/javascript">
  2. function validate(form){
  3. var errors = [];
  4. if (!checkRadioArray(form.przyczyna)) {
  5. errors[errors.length] = "Test";}
  6. if (!checkRadioArray(form.plec)) {
  7. errors[errors.length] = "Test1";}
  8. if (errors.length > 0) {
  9. reportErrors(errors);
  10. return false;}
  11. return true;}
  12. function checkRadioArray(radioButtons){
  13. for (var i=0; i < radioButtons.length; i++) {
  14. if (radioButtons[i].checked) {
  15. return true;}}
  16. return false;}
  17. function reportErrors(errors){
  18. var numError;
  19. var msg = "Zaznacz jaka jest przyczyna";
  20. alert(msg);}
  21. </script>
  22.  
  23.  
  24.  
  25. print"<form action='gdzies_tam.php' name='form1' method='POST' >";
  26. print"PESEL<input type='text' maxlength='11' name='pesel' value='' style='width: 150px;'>";
  27. print"PŁEĆ";
  28. echo"<input type='radio' name='plec' value='m'/>MĘŻCZYZNA";
  29. echo"<input type='radio' name='plec' value='k'/>KOBIETA";
  30. print"PRZYCZYNA";
  31. print"<input type='radio' name='przyczyna' value='1'/>BÓL";
  32. print"<input type='radio' name='przyczyna' value='2'/>CHOROBA";
  33. print"</form>";



Skrypt działa, ale chciałbym aby zmieniał alert w zależności, który radio nie jest zaznaczony. Jeśli radio plec = '', to komunikat taki "aaaaaaaaaaaaa". Jeśli radio przyczyna ='' to komunikat "bbbbbbb".

Jak to przerobić. Poproszę o pomoc.
trueblue
Do tablicy errors wrzucaj odpowiednie komunikaty, a nie "Test".
Funkcję reportErros zmień na:
  1. function reportErrors(errors){
  2. for(var i=0;i<errors.length;i++)
  3. alert(errors[i]);
  4. }
8_pasarzer_NOSTROMO
Dzieki wielkie, działa.

OnClick='POMÓGŁ'
nospor
Tak na marginesie: ale wiesz, ze glowne sprawdzanie tak czy siak musi byc po stronie php?
8_pasarzer_NOSTROMO
Dzieki wszystkim za pomoc.

Przebudowałem nieco mój kod na taki :
  1. <script type="text/javascript">
  2. function check_form(f) {
  3. if (f.pyt_1.value == ''){alert('Proszę uzupełnić kod pocztowy');return false;}
  4. if (!f.pyt_2[0].checked && !f.pyt_2[1].checked && !f.pyt_2[2].checked){alert('Proszę uzupełnić branżę');return false;}
  5. if (f.pyt_3[0].checked == false && f.pyt_3[1].checked == false){alert('Proszę uzupełnić pole zgody dotyczącej danych osobowych');return false;}
  6. return true;}
  7. </script>
  8.  
  9.  
  10. <form action="index.html" onsubmit="return check_form(this)">
  11. <p>1. Kod pocztowy<sup> (*)</sup>
  12. <br><input type="text" name="pyt_1" size="50">
  13. <p>2. Branza<sup> (*)</sup>
  14. <br><input type="checkBox" name="pyt_2" value="1">Szkolenia
  15. <br><input type="checkBox" name="pyt_2" value="2">Wyposarzenie biur
  16. <br><input type="checkBox" name="pyt_2" value="3">Rozrywka
  17. <p>3. Czy zgadzasz sie na przetwrzanie danych osobowych ?<sup> (*)</sup>
  18. <br><input type="radio" name="pyt_3" value="Tak">Tak
  19. <br><input type="radio" name="pyt_3" value="Nie">Nie
  20. <br><input type="submit" value="Wyślij" /></form>


Skrypt działa jak złoto, sprawdza czy wypełniony jest checkbox, radio, input text. Ale idąc dalej tą analogią chciałbym aby javascript sprawdzał pętlą checkoboxy bo może dojśc do sytuacji że nie będę wstanie z góry wiedziec ile ich będzie.

Przykład formularza :
  1.  
  2. <form action="index.html" onsubmit="return check_form1(this)">
  3. <p>1. Kod pocztowy<sup> (*)</sup>
  4. <br><input type="text" name="pyt_1" size="50">
  5. <p>2. Branza<sup> (*)</sup>
  6. $ile=140;
  7. for($x=0;x<$ile;$x++)
  8. {
  9. <br><input type="checkBox" name="pyt_2[$x]" value="$x">$jakas_zmienna[$x
  10. }
  11. <p>3. Czy zgadzasz sie na przetwrzanie danych osobowych ?<sup> (*)</sup>
  12. <br><input type="radio" name="pyt_3" value="Tak">Tak
  13. <br><input type="radio" name="pyt_3" value="Nie">Nie
  14. <br><input type="submit" value="Wyślij" /></form>


Jak w tym przypadku sprawdzić czy choć jeden checkbox jest zaznaczony ?

Próbowałem coś, takiego :
  1. function check_form1(f){
  2. WartoscPola = "";
  3. iloscradiobuttonow = document.f.pyt_2.length;
  4. for (var i=0; i < iloscradiobuttonow; i++) {
  5. if (f.pyt_2[i].checked == true) {
  6. WartoscPola = f.pyt_2[i].value;
  7. return;
  8. }
  9. }
  10. if (WartoscPola == false){alert('Proszę wybrać choć jeden checkbox');return false;}
  11. }


Bardzo prosze o pomoc, bo z js słabo mi idzie, ale bardzo mi się podoba i zaczynam łapać podstawy.

Witam
Kto mi pomoże z tym formularzem. Tym razem

  1. function check_form2(f){
  2. if (f.doprowadzil.value=='' && f.doprowadzil2.value==''){alert('Alert 1');return false;}
  3. if (f.dyspozycja.value=='' && f.dyspozycja2.value==''){alert('Alert 2');return false;}
  4. return true;}



Formularz składa się z 2 opcji
  1. <form action='cos_tam.php' name='form2' method='POST' onsubmit=\"return check_form2(this);\">

  1. $zapytanie="select dyspozycja FROM ks_ewidencji where (dyspozycja!='') group by dyspozycja order by dyspozycja";
  2. $wykonaj = mysql_query($zapytanie) or die ("<BR>Błąd 527");
  3. while($wiersz = mysql_fetch_array($wykonaj))
  4. {$sl[]=$wiersz['dyspozycja'];}mysql_free_result($wykonaj);
  5. $ile=count($sl);
  6. $dyspozycja = ją uzyskuje w wyniku wcześniejszych zapytań


  1. <select name='dyspozycja' id='dyspozycja' style='width: 180px; size='1'>
  2. <option value='$dyspozycja' selected>$dyspozycja</option>

  1. for($i=0;$i<$ile;$i++){print"<option value='$sl[$i]'>$sl[$i]</option>";}unset($sl,$ile);

  1. </select>&nbsp;&nbsp;&nbsp;
  2. <input type='checkbox' value='wartość' onclick=\"this.form.elements['dyspozycja2'].disabled = !this.checked; this.form.elements['dyspozycja'].disabled = this.checked\" />
  3. inna : <input type='text' name='dyspozycja2' style='width: 150px;' disabled='disabled'>


Można wybrać coś z selecta lub zaznaczyć checkboxem uaktywnienie drugiego pola (input text). Chciałbym uzsyakć alerta o tym iż osoba zaznaczyła checkboxa (że chce wpisać coś w pole input text) a nic nie wpisała.

Pomocy!
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.