![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Cześć, jak to zrobić poprawnie walidacje w JS, aby sprawdzało, czy został wybrano chociaż jeden zawód z wielu podanych?
Próbowałem tak:
Chodzi tylko to z tym zawodem, reszta jest dobrze, bo inne walidacje działają (tylko nie wklejałem ich tutaj, żeby nie zaśmiecać kodu). Proszę o pomoc. P.S.: tak znaczy, że wybrane, a nie znaczy, że nie wybrane (w razie czego). Ten post edytował in5ane 13.03.2009, 07:59:05 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
co to jest te zaw1 ?To są inputy czy checkboxy? Jak checkboxy to one wartosc zawsze mają niezaleznie czy je zaznaczysz czy nie. musisz sprawdzac atrybut checked
ps: ulatwij se sprawe i uzyj petli albo wogole nadaj klase i po klasie jedź. przeciez to co masz teraz to normalnie zalamka (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) edit: napis += ... tę zmienną napis gdzies wczesniej deklarujesz? Bo jak nie to nie zdziw się ze mozesz dostac js errora podobnie z brakuje_danych |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
To jest wcześniej, inne walidacje działają, tylko nie wiem dlaczego ta nie działa. To są inpunty radio.
P.S.: Nie znam na JS, dlatego nie wiem jak tutaj zrobić pętlę. Ważne, żeby sprawdzało czy chociaż jeden zawód został wybrany. Ten post edytował in5ane 13.03.2009, 15:03:57 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Radio z tej samej grupy mają ta sam atrybut name, więc:
- var x = document.getElementByName - pętla: Kod for(var i in x) kod - warunek: Kod if(x[i] <-- dalej Ci nie powiem żeby za prosto nie było (użyj checked, które musi się równać true) ) return true; - po pętli : Kod return false;
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Za prosto nie było, dla mnie nic nie jest proste w JS, bo nie umiem tego, tylko gotowe wykorzystywałem, bo mi była potrzebna taka walidacja formularza ;/
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Masz praktycznie wszystko podane prze ze mnie. Teraz wystarczy Google i po kolei:
- JS document.getElementByName - checked JS chcebkbox I to co napisałem skleić w jedną całość - tak naprawdę to wystarczy 2 słowa dopisać - dasz radę, jak Ci się nie uda pokaż nam swoje próby z kodem, który podałem... |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
document.getElementsByName ma zwrócić mi dane z pól o takiej samej nazwie, no ale te pola mają różne nazwy...: zaw1, zaw2.. zaw24, zaw25.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Sorry źle przeczytałem:
Kod <script> function x(){ for(var i=1; i<= /* tu podajesz liczbę tych pól*/; i++) if(document.getElementsByName("zaw"+i)[0]./* tu to chcecked co miałeś sprawdzić */ == true) return true; return false; } if(x()) alert("OK"); else alert("Zaznacz coś"); </script> Pozdrawiam Ten post edytował kamil4u 14.03.2009, 20:56:27 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Nie wiem, czy my się zrozumieliśmy, te pola zawodów są typu radio i mają wartość tak lub nie.
W tamto miejsce wiem, że trzeba wstawić poprostu checked. Ten post edytował in5ane 14.03.2009, 22:09:59 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
To chyba się nie rozumiemy - napisz jakie masz pola radio i co chcesz dokładnie uzyskać
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Mam taki formularz: http://dancepiotrkow.pl/formularz.php
I musi zostać wybrany chociaż jeden zawód. I żeby to było w funkcji w JS w tej przetwarzaj_dane(). Proszę o pomoc. To pilne. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
A nie lepiej zrobić checkbox i wtedy wykorzystać mój kod - wyżej?
No ale dobra - nie sprawdzałem: Kod <html>
<body> <script type="text/javascript"> function funkcja(){ for(var i=1; i<=2; i++) if(document.getElementsByName("zaw"+i)[0].checked) return true; alert("Źle") return false; } </script> <form onSubmit="return funkcja();"> 1: <input type="radio" name="zaw1" value="tak"> <input type="radio" name="zaw1" value="nie" checked><br> 2: <input type="radio" name="zaw2" value="tak"> <input type="radio" name="zaw2" value="nie" checked><br><br> <input type="submit" value="sprawdz"> </form> </body> </html> |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Wszystko bardzo fajnie działa. Dodałem sobie to do tej mojej funkcji (to mi się udało w poniższy sposób), ale jest pewien problem, gdyż napis w alercie wyświetla mi się tyle razy ile razy się wykonuje pętla (czyli tyle ile jest tych zadań).
Dodałem to tak:
I czy da się jakoś zakończyć te pętlę przed napis +=? Już próbowałem breakiem, ale to wtedy nie działało w ogóle. Musiałem do IF'a dopisać ! aby to działało pod mój skrypt. Ten post edytował in5ane 15.03.2009, 18:25:43 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 349 Pomógł: 72 Dołączył: 22.01.2008 Skąd: Wadowice/Oświęcim Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował k_@_m_i_l 15.03.2009, 19:09:43 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
A to brakuje_danych=true; gdzie wstawić?
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Pokaż wszystkie części kodu, które są związane z tym (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
No i chodzi o to, że komunikat wyświetla się 25 razy, ale tak to działa. @k_@_m_i_l: zrobiłem tak, dopisując brakuje_danych=true; przed tym breakiem i rzeczywiście wyświetla się raz jako jeden, ale nie działa. @kamil4u: może ty będziesz miał pomysł. Z góry dziękuję. |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 349 Pomógł: 72 Dołączył: 22.01.2008 Skąd: Wadowice/Oświęcim Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj tak : Sprawdza czy element jest zaznaczony i czy zmienna brakuje danych jest równa true(tzn. zwraca true jeśli jest false), jeśli zmienna bedzie true,tzn. komunikat jest wpisany nie dopisze do napisu.Musi teraz działać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Nie sprawdzałem - nie zauważyłem, że to już zostało podane takie rozwiązanie - widocznie wtedy coś źle zrobiłeś - bo tak działa:
Kod <script type="text/javascript">
function przetwarzaj_dane () { var brakuje_danych=false; var formularz=document.forms[0]; var napis=""; for(var i=1; i<=25; i++) if (!document.getElementsByName("zaw"+i)[0].checked) { napis += "\nMusisz zaznaczyc conajmniej jeden zawod\n"; brakuje_danych=true; break; } if(brakuje_danych){ alert ("Nie wypelniles nastepujacych pol:\n" + napis); return false; } return true; } </script> Ten post edytował kamil4u 15.03.2009, 19:47:08 |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
k_@_m_i_l: w ogóle nie wyświetla się alert.
@kamil4u: no i wyświetla się alert (ale już jeden), ale jak zaznaczę jedną opcję to i tak nadal jest ten alert. Przy tym Twoim jak zaznaczę wszystkie to znika wtedy alert. tutaj proszę zerknąć w razie czego: http://dancepiotrkow.pl/formularz.php Ten post edytował in5ane 15.03.2009, 20:12:49 |
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 349 Pomógł: 72 Dołączył: 22.01.2008 Skąd: Wadowice/Oświęcim Ostrzeżenie: (0%) ![]() ![]() |
Tam był problem w tym,że używałeś zmiennej brakuje_danych do sprawdzania wielu wyników if'ów i nadpisywało wartość. |
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
@k_@_m_i_l: nareszcie mi ktoś pomógł. Chyba mnie zmobilizujesz do nauki JavaScript.
@kamil4u: ty też włożyłeś w to trochę serca, dlatego Tobie też dziękuję. Ten post edytował in5ane 15.03.2009, 20:23:32 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 08:27 |