Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Checkbox i js
nikestylex7
post 24.10.2013, 14:35:04
Post #1





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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. });
Go to the top of the page
+Quote Post
nospor
post 24.10.2013, 14:36:58
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
phpion
post 24.10.2013, 14:37:40
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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').
Go to the top of the page
+Quote Post
nikestylex7
post 24.10.2013, 15:50:41
Post #4





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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. });


Ten post edytował nikestylex7 24.10.2013, 15:51:14
Go to the top of the page
+Quote Post
SmokAnalog
post 24.10.2013, 16:00:17
Post #5





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Sprawdź w konsoli JavaScript - ona na pewno Cię nakieruje na błąd.
Go to the top of the page
+Quote Post
nikestylex7
post 24.10.2013, 16:06:03
Post #6





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


Czysta jak łza - niestety.
Go to the top of the page
+Quote Post
SmokAnalog
post 24.10.2013, 16:28:45
Post #7





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nikestylex7
post 24.10.2013, 17:05:51
Post #8





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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
Go to the top of the page
+Quote Post
nospor
post 24.10.2013, 17:12:37
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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ą....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nikestylex7
post 24.10.2013, 17:15:54
Post #10





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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. });
Go to the top of the page
+Quote Post
nospor
post 24.10.2013, 17:19:46
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nikestylex7
post 24.10.2013, 20:15:05
Post #12





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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. });
Go to the top of the page
+Quote Post
SmokAnalog
post 24.10.2013, 22:57:20
Post #13





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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.

Ten post edytował SmokAnalog 24.10.2013, 23:00:39
Go to the top of the page
+Quote Post
nikestylex7
post 25.10.2013, 00:27:21
Post #14





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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.

Ten post edytował nikestylex7 25.10.2013, 00:40:58
Go to the top of the page
+Quote Post
SmokAnalog
post 25.10.2013, 08:30:30
Post #15





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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ę">


Ten post edytował SmokAnalog 25.10.2013, 08:31:35
Go to the top of the page
+Quote Post
nikestylex7
post 25.10.2013, 13:22:25
Post #16





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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.
Go to the top of the page
+Quote Post
phpion
post 25.10.2013, 13:40:24
Post #17





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post
nikestylex7
post 25.10.2013, 15:00:26
Post #18





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


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 ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.07.2025 - 12:23