![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 0 Dołączył: 10.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam problem z checkboxem w formularzu, który domyślnie jest zaznaczony i nie zwraca prawidłowo wartości i błędu. Docelowo chcę mieć następującą sytuację: Jeśli pole checkbox zostanie odznaczone, to wyświetli się komunikat z błędem i nie pozwoli wysłać formularza (nie chcę korzystać z opcji blokowanie buttonu submit), jeśli pozostanie nie ruszone, to wyśle wartość np. value. W html-u wygląda to następująco: , a w php:
Zna ktoś może rozwiązanie tego problemu? PS. W internecie przeczytałem już sporo na ten temat, ale rozwiązania dla mojego przypadku nie znalazłem ![]() |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 4 Dołączył: 15.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
nie znalazłeś rozwiązania bo to co proponujesz wydaje się niezgodne ze sztuką. Do blokowania formularza używa się na codzień np. tego http://api.jquery.com/event.preventdefault/. A odpowiadająć dokładnie na twoje pytanie to przepis na twoją bolączkę, wg. mnie wygląda tak: 1. wyświetl formularz 2. wciśnij submit 3. jQuery (czy innym prototype) blokujesz dalszą wysyłkę 4. za pomocą ajax przesyłasz form do walidacji (czy innych operacji) 4a. jak poszło nie tak podczas walidacji, logujesz błędy do pliku, zanim odeślesz info do przeglądarki i wykonasz pkt. 5 i 6 (to opcja, np. do formularza logowania) 5. jeśli przeszło walidację robisz http://api.jquery.com/submit/ 6. a jeśli nie to robisz coś innego, np. wyświetlasz komunikaty błędów ![]() Tak z regóły działa większość formularzy. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 217 Pomógł: 40 Dołączył: 20.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Kod poniżej zwraca tylko true lub false, więc nigdy się nie wykona.
Wyrzuć ten znak równości i będzie działało. Warunek wykona się gdy checkbox będzie zaznaczony. Ten post edytował ikssde 27.02.2015, 11:38:19 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 0 Dołączył: 10.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Kod poniżej zwraca tylko true lub false, więc nigdy się nie wykona. Wyrzuć ten znak równości i będzie działało. Warunek wykona się gdy checkbox będzie zaznaczony. Teraz za każdym razem pokazuje mi błąd, nawet gdy pole jest zaznaczone. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
No ale kolego - warunki to to Twoje ukryte pole, które zawsze ma tą samą wartość Nie, chyba, że zmieniasz ją jakoś w JS w momencie kliknięcia w checkbox. Daj tak:
a potem w PHP:
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 0 Dołączył: 10.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
No ale kolego - warunki to to Twoje ukryte pole, które zawsze ma tą samą wartość Nie, chyba, że zmieniasz ją jakoś w JS w momencie kliknięcia w checkbox. Daj tak: a potem w PHP:
Nie działa. Zwraca mi ciągle "OK" |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Zapewniam Cię, że działa. Skleiłem kod w całość:
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 0 Dołączył: 10.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Zapewniam Cię, że działa. Skleiłem kod w całość:
Nie wiem czemu, ale dalej nie działa. Może to wina czegoś innego:
Zależy mi na powiadamianiu użytkownika, gdy odznaczy pole akceptacji, w przeciwnym razie formularz nie zostanie wysłany. I tu jeszcze js Kod jQuery(function($){ $('.pi-contact-form').submit(function(){ var $form = $(this), $error = $form.find('.pi-error-container'), action = $form.attr('action'); $error.slideUp(750, function() { $error.hide(); $warunki = $form.find('.form-control-warunki'), $.post(action, { warunki: $warunki.val(), }, function(data){ $error.html(data); $error.slideDown('slow'); if (data.match('success') != null) { $warunki.val(''); } } ); }); return false; }); //endregion }); PS. Zamieszczam kody w odniesieniu tylko do pola "warunki". Ten post edytował senior.pol 27.02.2015, 15:57:17 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.07.2025 - 00:18 |