Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Checkbox i js
Forum PHP.pl > Forum > Przedszkole
nikestylex7
Witam. Piszę walidację formularza a, że uczę się dopiero js to napotkałem błąd. Skrypt nie reaguje.

  1. $('#rules').keyup(function() {
  2. var rules = $('#rules').val();
  3. if(rules.checked = false) {
  4. var komunikat_liczba_znakow7 = "Zaakceptuj regulamin.";
  5. $('#komunikat_liczba_znakow7').removeClass("poprawny");
  6. $('#komunikat_liczba_znakow7').addClass("niepoprawny");
  7. $('#komunikat_liczba_znakow7').html(komunikat_liczba_znakow7);
  8. } else {
  9. var komunikat_liczba_znakow7 = "Zaakceptowałeś regulamin.";
  10. $('#komunikat_liczba_znakow7').removeClass("niepoprawny");
  11. $('#komunikat_liczba_znakow7').addClass("poprawny");
  12. $('#komunikat_liczba_znakow7').html(komunikat_liczba_znakow7);
  13. }
  14. });
nospor
var rules = $('#rules').val();
if(rules.checked = false) {

Najpierw pobierasz wartosc pola, czyli tekst, a potem sprawdzasz czy ten tekst jest CHECKED? Zastanow sie chwile nad tym
phpion
var rules = $('#rules').val();
Tu masz wartość pola, a nie jego obiekt. Zostaw samo $('#rules'). Dalej: nie = tylko ==, a już w ogóle lepiej is(':checked').
nikestylex7
znalazłem jeszcze problem tutaj. Jak miałem mniej rozbudowane to działało lecz jak rozbudowałem trochę to już nie. Nie reaguje na submit.
  1. $('form').submit(function() {
  2. var name_czy_pusty = $('#name').val();
  3. var surname_czy_pusty = $('#surname').val();
  4. var email_czy_pusty = $('#email').val();
  5. var phone_czy_pusty = $('#phone').val();
  6. var cname_czy_pusty = $('#cname').val();
  7. var cstreet_czy_puste = $('#cstreet').val();
  8. var ccode_czy_pusty = $('#ccode').val();
  9. var cplace_czy_pusty = $('#cplace').val();
  10. var nip_czy_pusty = $('#nip').val();
  11. var rules_czy_pusty = $('#rules');
  12. var kumunikat_walidacji = '';
  13. var punkty_walidacji = 0;
  14. if(name_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = "Pole imię jest wymagane. <br>"; }
  15. if(surname_czy_puste.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Pole nazwisko jest wymagane. <br>"; }
  16. if(email_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Pole email jest wymagane."; }
  17. if(phone_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = "Pole telefon jest wymagane. <br>"; }
  18. if(cname_czy_puste.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Pole nazwa firmy jest wymagane. <br>"; }
  19. if(cstreet_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Pole ulica jest wymagane."; }
  20. if(ccode_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = "Pole kod pocztowy jest wymagane. <br>"; }
  21. if(cplace_czy_puste.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Pole miejscowość jest wymagane. <br>"; }
  22. if(nip_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Pole nip jest wymagane."; }
  23. if(rules_czy_pusty.checked == false) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Akceptacja regulaminu jest wymagana."; }
  24. if(punkty_walidacji == 10)
  25. {
  26. kumunikat_walidacji = "Wszystkie pola zostały wypełnione poprawnie. ";
  27. }
  28. $('#kumunikat_walidacji').fadeIn();
  29. $('#kumunikat_walidacji').html(kumunikat_walidacji);
  30. return false;
  31. });
SmokAnalog
Sprawdź w konsoli JavaScript - ona na pewno Cię nakieruje na błąd.
nikestylex7
Czysta jak łza - niestety.
SmokAnalog
Swoją drogą Twoja walidacja działa bez sensu. Sprawdzane są wszystkie warunki, a wypisywany jest tylko ostatni błąd. Zamiast tego może dodawaj błędy do tablicy, a warunkiem prawidłowo wypełnionego formularza niech będzie np.:
[JAVASCRIPT] pobierz, plaintext
  1. if(bledy.length === 0) {...}
[JAVASCRIPT] pobierz, plaintext

Bo sumowanie prawidłowych pól i porównywanie ich do liczby (i to stałej!) jest bardzo, bardzo złym pomysłem.
nikestylex7
tzn nie rozumiem możesz prościej bądź jakiś przykład ?

albo może to przerobić tak aby jak jest źle podświetlało na czerwono
nospor
Cytat
Nie reaguje na submit.
Bo zawsze zwracasz false:return false
FALSE ma byc gdy cos jest zle, gdy wszystko dobrze to ma byc return true;

Cytat
prawdzane są wszystkie warunki, a wypisywany jest tylko ostatni błąd.
Przeciez dodaje do siebie komunikaty, wiec wyswietla wszystko co bylo zle a nie tylko ostatni....

Tak ma byc koncowka:
Kod
if(punkty_walidacji == 0)
            {
                kumunikat_walidacji = "Wszystkie pola zostały wypełnione poprawnie. ";
            }
            $('#kumunikat_walidacji').fadeIn();
            $('#kumunikat_walidacji').html(kumunikat_walidacji);

if(punkty_walidacji == 0) return true;
else return false;


Podstawy logiki sie klaniają....
nikestylex7
tak tylko to nic nie zmienia dalej pokazuje ostatni błąd a nie wszystkie naraz.

  1. $('form').submit(function() {
  2. var name_czy_pusty = $('#name').val();
  3. var surname_czy_pusty = $('#surname').val();
  4. var email_czy_pusty = $('#email').val();
  5. var phone_czy_pusty = $('#phone').val();
  6. var cname_czy_pusty = $('#cname').val();
  7. var cstreet_czy_pusty = $('#cstreet').val();
  8. var ccode_czy_pusty = $('#ccode').val();
  9. var cplace_czy_pusty = $('#cplace').val();
  10. var nip_czy_pusty = $('#nip').val();
  11. var rules_czy_pusty = $('#rules');
  12. var kumunikat_walidacji = '';
  13. var punkty_walidacji = 0;
  14. if(name_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = "Pole imię jest wymagane. <br>"; }
  15. if(surname_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Pole nazwisko jest wymagane. <br>"; }
  16. if(email_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Pole email jest wymagane."; }
  17. if(phone_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + "Pole telefon jest wymagane. <br>"; }
  18. if(cname_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Pole nazwa firmy jest wymagane. <br>"; }
  19. if(cstreet_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Pole ulica jest wymagane."; }
  20. if(ccode_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + "Pole kod pocztowy jest wymagane. <br>"; }
  21. if(cplace_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Pole miejscowość jest wymagane. <br>"; }
  22. if(nip_czy_pusty.length != 0) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Pole nip jest wymagane."; }
  23. if(rules_czy_pusty.checked == false) { punkty_walidacji++; } else { kumunikat_walidacji = kumunikat_walidacji + " Akceptacja regulaminu jest wymagana."; }
  24. if(punkty_walidacji == 0)
  25. {
  26. kumunikat_walidacji = "Wszystkie pola zostały wypełnione poprawnie. ";
  27. }
  28. $('#kumunikat_walidacji').fadeIn();
  29. $('#kumunikat_walidacji').html(kumunikat_walidacji);
  30.  
  31. if(punkty_walidacji == 0) return true;
  32. else return false;
  33. });
nospor
Na szybko czytalem i nie zwrocilem uwagi ze ty masz tam ELSY a punkty walidacji sluza do czegos innego przez to..... faktycznie porąbany sposob zes wymyslil wink.gif
nikestylex7
czyli musze się ich pozbyć ? chciałbym wiedzieć jak zrobić tak jak powyżej kolega napisał czyli dodanie do jednej tablicy wszystkich potem wyrzucenie na ekranie

Coś nadal jest nie tak wpisuje wszystko wyskakuje ze poprawnie kilkam submit i nic się nie dzieje tak jakby było coś źle wypełnione...

  1. $('form').submit(function() {
  2. var name_czy_pusty = $('#name').val();
  3. var surname_czy_pusty = $('#surname').val();
  4. var email_czy_pusty = $('#email').val();
  5. var phone_czy_pusty = $('#phone').val();
  6. var cname_czy_pusty = $('#cname').val();
  7. var cstreet_czy_pusty = $('#cstreet').val();
  8. var ccode_czy_pusty = $('#ccode').val();
  9. var cplace_czy_pusty = $('#cplace').val();
  10. var nip_czy_pusty = $('#nip').val();
  11. var rules_czy_pusty = $('#rules');
  12. var kumunikat_walidacji = '';
  13. var punkty_walidacji = 0;
  14. if(name_czy_pusty.length != 0) { punkty_walidacji++; kumunikat_walidacji = "Pole imię jest wymagane. <br>"; }
  15. if(surname_czy_pusty.length != 0) { punkty_walidacji++; kumunikat_walidacji = kumunikat_walidacji + " Pole nazwisko jest wymagane. <br>"; }
  16. if(email_czy_pusty.length != 0) { punkty_walidacji++; kumunikat_walidacji = kumunikat_walidacji + " Pole email jest wymagane. <br>"; }
  17. if(phone_czy_pusty.length != 0) { punkty_walidacji++; kumunikat_walidacji = kumunikat_walidacji + "Pole telefon jest wymagane. <br>"; }
  18. if(cname_czy_pusty.length != 0) { punkty_walidacji++; kumunikat_walidacji = kumunikat_walidacji + " Pole nazwa firmy jest wymagane. <br>"; }
  19. if(cstreet_czy_pusty.length != 0) { punkty_walidacji++; kumunikat_walidacji = kumunikat_walidacji + " Pole ulica jest wymagane. <br>"; }
  20. if(ccode_czy_pusty.length != 0) { punkty_walidacji++; kumunikat_walidacji = kumunikat_walidacji + "Pole kod pocztowy jest wymagane. <br>"; }
  21. if(cplace_czy_pusty.length != 0) { punkty_walidacji++; kumunikat_walidacji = kumunikat_walidacji + " Pole miejscowość jest wymagane. <br>"; }
  22. if(nip_czy_pusty.length != 0) { punkty_walidacji++; kumunikat_walidacji = kumunikat_walidacji + " Pole nip jest wymagane.<br>"; }
  23. if(rules_czy_pusty.is(':checked') == false) { punkty_walidacji++; kumunikat_walidacji = kumunikat_walidacji + " Akceptacja regulaminu jest wymagana.<br>"; }
  24. if(punkty_walidacji == 0)
  25. {
  26. kumunikat_walidacji = "Wszystkie pola zostały wypełnione poprawnie. ";
  27. }
  28. $('#kumunikat_walidacji').fadeIn();
  29. $('#kumunikat_walidacji').html(kumunikat_walidacji);
  30.  
  31. if(punkty_walidacji == 0) return true;
  32. else return false;
  33. });
SmokAnalog
O wiele, wiele bardziej elegancki kod:
[JAVASCRIPT] pobierz, plaintext
  1. $('form').submit(function () {
  2. var messages = {
  3. name: "Pole imię jest wymagane.",
  4. surname: "Pole nazwisko jest wymagane.",
  5. // pozostałe pola i komunikaty na tej samej zasadzie
  6. },
  7. errors = [];
  8.  
  9. $.each(messages, function (id, message) {
  10. if ($("#" + id).val() === "") {
  11. errors.push(message);
  12. }
  13. });
  14.  
  15. if (!$('#rules').is(':checked')) {
  16. errors.push("Akceptacja regulaminu jest wymagana.");
  17. }
  18.  
  19. if (errors.length > 0) {
  20. $('#kumunikat_walidacji')
  21. .html(errors.join("<br>"))
  22. .fadeIn();
  23. return false;
  24. }
  25. });
[JAVASCRIPT] pobierz, plaintext

Uzupełnij pozostałe pola według schematu.

P.S. Po co ustawiałeś komunikat przy wysyłaniu prawidłowo wypełnionego formularza? Przecież on się przeładowuje od razu (wysyła).

EDIT

Jeśli wszystkie pola mają mieć komunikat "Pole X jest wymagane", to równie dobrze możesz jeszcze uprościć i w obiekcie z komunikatami przekazywać tylko nazwę pola, np. name: "imię", a resztę komunikatu dopisywać dopiero przy wrzucaniu go do tablicy z błędami.
nikestylex7
Smok wiem że już dużo mi pomogłeś uprościłeś mój kod. Znalazłem też błąd jaki miałem a mianowicie w inputach zrobiłem tak że nie ma do nich labela tylko nazwy podawane są w środku czyli w każdym inpucie jest Imię Nazwisko i napisałem to tak:

  1. <input size="12" type="text" name="name" id="name" value="Imię" onfocus="if(this.value == 'Imię') {this.value=''}" onblur="if(this.value == ''){this.value ='Imię'}" title="min. 3 znaki max. 16"/>


Wiem, że to jest bez sensu powiązując to z kodem js powyżej dlatego chciałbym jakoś te dwa skrypty połączyć czyli walidacje która sprawdza czy pola nie są puste oraz to żeby w inputach wyświetlały się poszczególne value.
SmokAnalog
Do wstawiania wartości początkowej, czyli u Ciebie opisu przeznaczenia pola, użyj atrybutu HTML5 placeholder, a nie value:
  1. <input size="12" type="text" name="name" id="name" title="min. 3 znaki max. 16" placeholder="Imię">
nikestylex7
A jeszcze mam pytanie jak chciałbym zrobić rejestracje 3 etapową 1 etap już mam czyli sprawdzanie danych. Potem chciałbym jak kliknie jakaś osoba na submit przenosi ją do działu płatności czyli dotpay. Płaci przekierowywuje ją na stronę główną wraz z tym wysyła dane na serwer. Chyba że zrobienie tego można jakoś ułatwić. Głównie chodzi o płatność za usługi handlowe.
phpion
Zapisuj dane z rejestracji do bazy do jakiejś tabeli tymczasowych użytkowników (nie opłaconych), a po dokonaniu płatności przenieś rekord, za który zapłacono do właściwej tabeli. DotPay wysyła odpowiedzi "w tle" tak więc musisz gdzieś przechować dane użytkownika by wykonać jakieś operacje po pozytywnej wpłacie. Oczywiście do DotPaya przesyłasz też informację o tym, jakiego ID użytkownika dotyczy płatność. Kombinuj.
nikestylex7
a jak myślisz lepiej będzie zrobić takie coś, że po wypelnieniu formularza przechodzi na stronę płatności, gdy osoba zapłaci ma pełen dostęp i się może zalogować czy może lepiej zrobić tak, że rejestruje się potwierdza e-mail. Ma dostęp ale ograniczony i w zakładce aktywuj konto może zapłacić za korzystanie ?
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.