Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zabezpieczenie, obowiązkowe zaznaczenie odznaczonego checkboxa
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
sylwekb
Jakie polecenie służy obowiązkowemu zaznaczeniu odznaczonego checkboxa, chodzi o zaznaczenie zgody na przetwarzanie w zbiorach danych osobowych. Standardowo jest odznaczony. Jak zmusić walidacją w javascripcie do zaznaczenia. Wiem, że nie jest to idealny sposób ale w większości przypadków działa taka walidacja. Szukam na forum i jakoś nie udaje mi się znaleźć tego polecenia.

  1. <script>
  2.  
  3. <!--
  4. // zmienne flagi błedu
  5. var errfound = false;
  6.  
  7. //function to validate by length
  8. function ValidLength(item, len) {
  9. return ((item.length != len) == (item.length >= len));
  10. }
  11. // sprawdzanie poprawn&para;ci adresu e-mail
  12. function ValidEmail(item) {
  13. if (!ValidLength(item, 0)) return false;
  14. if (item.indexOf ('@', 0) == -1) return false;
  15. return true;
  16. }
  17. // wyswietlanie komunikatu o bledzie
  18. function error(elem, text) {
  19. // abort if we already found an error
  20. if (errfound) return;
  21. window.alert(text);
  22. elem.select();
  23. elem.focus();
  24. errfound = true;
  25. }
  26. // sprawdzanie poprawnosci
  27.  
  28. function V_message() {
  29. errfound = false;
  30. if (!ValidLength(document.rejestr.imie.value,2))
  31. error(document.rejestr.imie,"Proszę wpisać Imię");
  32. return !errfound; /* nie ma bledow */
  33. }
  34. //------------------------------------------------------------------------
  35. function V_message() {
  36. errfound = false;
  37. if (!ValidLength(document.rejestr.nazwisko.value,2))
  38. error(document.rejestr.nazwisko,"Proszę wpisać nazwisko");
  39. return !errfound; /* nie ma bledow */
  40. }
  41. //------------------------------------------------------------------------
  42. function V_message() {
  43. errfound = false;
  44. if (!ValidLength(document.rejestr.telefon.value,6))
  45. error(document.rejestr.telefon,"Proszę wpisać telefon");
  46. return !errfound; /* nie ma bledow */
  47. }
  48. //------------------------------------------------------------------------
  49. function V_mail() {
  50. errfound = false;
  51. if (!ValidLength(document.rejestr.visitormail.value, 5))
  52. error(document.rejestr.visitormail,"Wpisz adres e-mail");
  53. return !errfound; /* nie ma bledow */
  54. }
  55. //------------------------------------------------------------------------
  56. function V_message() {
  57. errfound = false;
  58. if (!ValidLength(document.rejestr.miejscowosc.value,2))
  59. error(document.rejestr.miejscowosc,"Proszę wpisać miejscowość");
  60. return !errfound; /* nie ma bledow */
  61. }
  62. //------------------------------------------------------------------------
  63. function V_message() {
  64. errfound = false;
  65. if (!ValidLength(document.rejestr.firma.value,5))
  66. error(document.rejestr.firma,"Proszę wpisać nazwę firmy");
  67. return !errfound; /* nie ma bledow */
  68. }
  69. //------------------------------------------------------------------------
  70.  
  71. function V_message() {
  72. checkbox=document.forms[0].elements[2];
  73. if(!checkbox.checked)
  74. {
  75. alert("Zaakceptuj regulamin");
  76. //dodatkowe akcje
  77. return false;
  78. }
  79. else
  80. {
  81. //dodatkowe akcje jeżeli zaznaczony
  82. return true;
  83. }
  84. }
  85. //------------------------------------------------------------------------
  86. function V_message() {
  87. checkbox=document.forms[0].elements[2];
  88. if(!checkbox.checked)
  89. {
  90. alert("Zaakceptuj zgodę na przetwarzanie danych osobowych");
  91. //dodatkowe akcje
  92. return false;
  93. }
  94. else
  95. {
  96. //dodatkowe akcje jeżeli zaznaczony
  97. return true;
  98. }
  99. }
  100. //------------------------------------------------------------------------
  101.  
  102.  
  103.  
  104. //sprawdzenie końcowe
  105. function Poprawne() {
  106. errfound=false;
  107.  
  108. if (!ValidLength(document.rejestr.imie.value, 0))
  109. error(document.rejestr.imie, "Proszę wpisać imię");
  110. //------------------------------------------------------------------------------------
  111. if (!ValidLength(document.rejestr.nazwisko.value, 0))
  112. error(document.rejestr.nazwisko, "Proszę wpisać nazwisko");
  113. //------------------------------------------------------------------------------------
  114. if (!ValidLength(document.rejestr.telefon.value, 0))
  115. error(document.rejestr.telefon, "Proszę wpisać telefon");
  116. //------------------------------------------------------------------------------------
  117. if (!ValidLength(document.rejestr.miejscowosc.value, 0))
  118. error(document.rejestr.miejscowosc, "Proszę wpisać miejscowowść");
  119. //------------------------------------------------------------------------------------
  120. if (!ValidLength(document.rejestr.firma.value, 0))
  121. error(document.rejestr.firma, "Proszę wpisać nazwę firmy");
  122. //------------------------------------------------------------------------------------
  123. if (!ValidEmail(document.rejestr.visitormail.value))
  124. error(document.rejestr.visitormail, "Proszę wpisać adres e-mail");
  125. //------------------------------------------------------------------------------------
  126. if (!ValidLength(document.rejestr.miejscowosc.value, 0))
  127. error(document.rejestr.miejscowosc, "Proszę wpisać miejscowowść");
  128. //------------------------------------------------------------------------------------
  129. if (!ValidLength(document.rejestr.firma.value, 0))
  130. error(document.rejestr.firma, "Proszę wpisać nazwę firmy");
  131. //------------------------------------------------------------------------------------
  132.  
  133.  
  134. return !errfound; /* nie ma bledow */
  135.  
  136. }
  137.  
  138. //-->
  139. </script>
  140.  
  141.  
trueblue
Właściwość "checked" dla inputa.

http://www.w3schools.com/jsref/prop_checkbox_checked.asp (przypisanie, nie sprawdzanie).
sylwekb
Mam w sumie 2 checkboxy, czy taka konstrukcja będzie prawidłowa dla mojego skryptu?

  1. if(!x.akceptacja_regulaminu.checked){
  2. napis+="Musisz potwierdzić, że akceptujesz regulamin\n"
  3. brakDanych=true;
  4. }
  5. if(!x.zgoda_dane_osobowe.checked){
  6. napis+="Musisz potwierdzić, że akceptujesz przetwarzanie w zbiorach danych osobowych\n"
  7. brakDanych=true;
  8. }
trueblue
Nie wiem co masz w zmiennej "x", a co za tym idzie we właściwościach tejże zmiennej "akceptacja_regulaminu" i "zgoda_dane_osobowe".
Może najzwyczajniej sprawdź czy działa poprawnie.
sylwekb
Jakoś u mnie nie chce działać. Może ktoś spojrzy "chłodnym okiem", być może popełniam gdzieś błąd.

Wszystkie pole formularza się bez problemu walidują tylko jest problem z tymi checkboxami.

Poniżej mam wpisy dla formularza i checkboxów (nie podaję pól które prawidłowo się walidują):



  1. <form method="post" onSubmit="return Poprawne();" action="plik.php" name="rejestr"
  2. ...
  3. <input type="checkbox" name="akceptacja_regulaminu" onSubmit="return Poprawne();" value="AKCEPTACJA">
  4. <input type="checkbox" name="zgoda_dane_osobowe" onSubmit="return Poprawne();" value="AKCEPTACJA">
  5. ...



Cały kod javascriptu jak poniżej
Jest Zaakceptuj regulamin i Zaakceptuj zgodę na przetwarzanie danych osobowych.

  1. <script>
  2.  
  3. <!--
  4. // zmienne flagi błedu
  5. var errfound = false;
  6.  
  7. //function to validate by length
  8. function ValidLength(item, len) {
  9. return ((item.length != len) == (item.length >= len));
  10. }
  11. // sprawdzanie poprawn&para;ci adresu e-mail
  12. function ValidEmail(item) {
  13. if (!ValidLength(item, 0)) return false;
  14. if (item.indexOf ('@', 0) == -1) return false;
  15. return true;
  16. }
  17. // wyswietlanie komunikatu o bledzie
  18. function error(elem, text) {
  19. // abort if we already found an error
  20. if (errfound) return;
  21. window.alert(text);
  22. elem.select();
  23. elem.focus();
  24. errfound = true;
  25. }
  26. // sprawdzanie poprawnosci
  27.  
  28. function V_message() {
  29. errfound = false;
  30. if (!ValidLength(document.rejestr.imie.value,2))
  31. error(document.rejestr.imie,"Proszę wpisać Imię");
  32. return !errfound; /* nie ma bledow */
  33. }
  34. //------------------------------------------------------------------------
  35. function V_message() {
  36. errfound = false;
  37. if (!ValidLength(document.rejestr.nazwisko.value,2))
  38. error(document.rejestr.nazwisko,"Proszę wpisać nazwisko");
  39. return !errfound; /* nie ma bledow */
  40. }
  41. //------------------------------------------------------------------------
  42. function V_message() {
  43. errfound = false;
  44. if (!ValidLength(document.rejestr.telefon.value,6))
  45. error(document.rejestr.telefon,"Proszę wpisać telefon");
  46. return !errfound; /* nie ma bledow */
  47. }
  48. //------------------------------------------------------------------------
  49. function V_mail() {
  50. errfound = false;
  51. if (!ValidLength(document.rejestr.visitormail.value, 5))
  52. error(document.rejestr.visitormail,"Wpisz adres e-mail");
  53. return !errfound; /* nie ma bledow */
  54. }
  55. //------------------------------------------------------------------------
  56. function V_message() {
  57. errfound = false;
  58. if (!ValidLength(document.rejestr.miejscowosc.value,2))
  59. error(document.rejestr.miejscowosc,"Proszę wpisać miejscowość");
  60. return !errfound; /* nie ma bledow */
  61. }
  62. //------------------------------------------------------------------------
  63. function V_message() {
  64. errfound = false;
  65. if (!ValidLength(document.rejestr.firma.value,5))
  66. error(document.rejestr.firma,"Proszę wpisać nazwę firmy");
  67. return !errfound; /* nie ma bledow */
  68. }
  69. //------------------------------------------------------------------------
  70. function V_message() {
  71. checkbox=document.forms[0].elements[2];
  72. if(!checkbox.checked)
  73. {
  74. alert("Zaakceptuj regulamin");
  75. //dodatkowe akcje
  76. return false;
  77. }
  78. else
  79. {
  80. //dodatkowe akcje jeżeli zaznaczony
  81. return true;
  82. }
  83. }
  84. //------------------------------------------------------------------------
  85. function V_message() {
  86. checkbox=document.forms[0].elements[2];
  87. if(!checkbox.checked)
  88. {
  89. alert("Zaakceptuj zgodę na przetwarzanie danych osobowych");
  90. //dodatkowe akcje
  91. return false;
  92. }
  93. else
  94. {
  95. //dodatkowe akcje jeżeli zaznaczony
  96. return true;
  97. }
  98. }
  99. //------------------------------------------------------------------------
  100.  
  101. //sprawdzenie końcowe
  102. function Poprawne() {
  103. errfound=false;
  104.  
  105. if (!ValidLength(document.rejestr.imie.value, 0))
  106. error(document.rejestr.imie, "Proszę wpisać imię");
  107. //------------------------------------------------------------------------------------
  108. if (!ValidLength(document.rejestr.nazwisko.value, 0))
  109. error(document.rejestr.nazwisko, "Proszę wpisać nazwisko");
  110. //------------------------------------------------------------------------------------
  111. if (!ValidLength(document.rejestr.telefon.value, 0))
  112. error(document.rejestr.telefon, "Proszę wpisać telefon");
  113. //------------------------------------------------------------------------------------
  114. if (!ValidLength(document.rejestr.miejscowosc.value, 0))
  115. error(document.rejestr.miejscowosc, "Proszę wpisać miejscowowść");
  116. //------------------------------------------------------------------------------------
  117. if (!ValidLength(document.rejestr.firma.value, 0))
  118. error(document.rejestr.firma, "Proszę wpisać nazwę firmy");
  119. //------------------------------------------------------------------------------------
  120. if (!ValidEmail(document.rejestr.visitormail.value))
  121. error(document.rejestr.visitormail, "Proszę wpisać adres e-mail");
  122. //------------------------------------------------------------------------------------
  123. if (!ValidLength(document.rejestr.miejscowosc.value, 0))
  124. error(document.rejestr.miejscowosc, "Proszę wpisać miejscowowść");
  125. //------------------------------------------------------------------------------------
  126. if (!ValidLength(document.rejestr.firma.value, 0))
  127. error(document.rejestr.firma, "Proszę wpisać nazwę firmy");
  128. //------------------------------------------------------------------------------------
  129.  
  130.  
  131. return !errfound; /* nie ma bledow */
  132.  
  133. }
  134.  
  135. //-->
  136. </script>
trueblue
.elements[2]; // tu pobierasz drugi element formularza, w Twoim okrojonym przykładzie jeden z nich ma indeks 0, drugi 1, w pełnym przykładzie pewnie jeszcze inaczej.

P.S. Coś za dużo masz tych funkcji V_message, każdą deklaracją nadpisujesz poprzednią.
P.P.S. Jeśli nie czujesz się na siłach co do jQuery, to chociaż zapoznaj się z metodami getElementById, getElementsByName, getElementsByTagName...itp.
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.