![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 3 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam, a więc tak... czytałem trochę o wyrażeniu regularnym w javascript... i mam formularz, w którym wpisuję oceny po przecinku i w następnym pliku przetwarzam i dodaję oceny do bazy danych... to działa, ale wyrażenie regularne miałoby sprawdzać, czy nie użytkownik nie wpisuje sobie: 6+.7-,2,9+ (2 może ale chodzi o ciąg...)...
Podejrzewać tylko mogę, że pojawi się jakaś zmienna lub coś, ale dokładnie nie wiem co ;] Więc jak to zrobić? Dzięki z góry... Bardzo proszę o zainteresowanie się tym tematem! Pilne! Ten post edytował kuba_pilach 21.02.2011, 18:50:52 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 654 Pomógł: 121 Dołączył: 27.10.2007 Skąd: Poznań, Łódź Ostrzeżenie: (0%) ![]() ![]() |
Pokaż co już sam zrobiłeś, jakie próby podejmowałeś i co nie działa...
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 675 Pomógł: 286 Dołączył: 15.06.2009 Skąd: Wieliczka Ostrzeżenie: (0%) ![]() ![]() |
skoro nie znasz dobrze wyrażeń regularnych to może prościej byłoby Ci rozbić ciąg do tablicy używając jako separatora przecinka (funkcja split), a następnie sprawdzić każdą wartość pod kątem poprawności (czy jest oceną)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 3 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie koniecznie chcę w java script: walidacja formularzy/wyrażenie regularne
Oto co próbowałem:
Błąd nie wyskakuje i o to chodzi... Ma wyskakiwać błąd, że źle wprowadziłem oceny Ale tu próbowałem w ten brzydszy sposób... Jeśli ktoś wie, jak zrobić natychmiastowy... niech pisze na 2223312 Ten post edytował kuba_pilach 22.02.2011, 16:55:31 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 30 Dołączył: 19.02.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Proponuję taką receptę:
1. Zrób split "po przecinkach", uzyskując tablicę ocen. 2. Każdą z nich sprawdź wyrażeniem regułowym. Jak rozumiem - dozwolone oceny to: 2, 2+, 3-, 3, 3+, ... 5, 5+, 6-, 6. Co do wyrażeń regułowych w JS - zajrzyj na stronę http://www.w3schools.com/js/js_obj_regexp.asp Z grubsza w połowie tej strony jest opis funkcji test(), a trochę poniżej klawisz "Test it yourself". Na stronie "Test it yourself" poeksperymentowałem z wyrażeniami regułowymi i wymyśliłem coś takiego: var patt1=new RegExp("^2[\+]?$|^[3-5][+-]?$|^6[\-]?$"); document.write(patt1.test("6+")); Za "6+" w funkcji "test" wstaw inne wartości, prawidłowe i błędne (na stronie "Test it yourself"). Jak widać we wzorcu: - wariant 1 - to "2" z opcjonalnym plusem (2[\+]?), - wariant 2 - ocena od 3 do 5 z opcjonalnym plusem lub minusem, - wariant 3 - ocena od 6 z opcjonalnym minusem. Znaki ^ i $ to początek i koniec string'u. Oczywiście, w powyższym kodzie "document.write" jest tylko na potrzeby eksperymentu. Ty musisz kolejne oceny: - sprawdzić tym wzorcem, - jeżeli dla którejś oceny składowej funkcja "test" da wynik false - to nie znalazłeś "pokrycia" żadnym z trzech wariantów, więc testowana ocena jest "nielegalna". Co do składni wyrażeń regułowych - dobry opis jest choćby w dokumentacji PHP: http://pl.php.net/manual/en/reference.pcre...tern.syntax.php Oczywiście "wyższe bajery" są w PCRE, ale podstawy obowiązują i wJS. A co do Twojego kodu (spr_oceny): 1. Jeżeli funkcja uruchomiona w ramach onsubmit chce ten submit zablokować, to powinna zwrócić false. U Ciebie tego nie ma. 2. Czy czasem w każdym z 4 warunków składowych zamiast "==" nie powinno być "!="? Przecież to znalezienie któregoś z tych wariantów oznacza błąd. Ten post edytował Valdi_B 22.02.2011, 20:35:21 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 3 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
A mam pytanko... jak pozwolić na ","? Próbowałem dać, ale cały czas wyskakuje false ...
A mam pytanko... jak pozwolić na ","? Próbowałem dać, ale cały czas wyskakuje false ... A i dlaczego dla przykładu "4" wyskakuje false ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 30 Dołączył: 19.02.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
1. Wejdź na stronę http://www.w3schools.com/js/tryit.asp?file...yjs_regexp_test
(test it yourself) 2. Do lewego okna, jako treść w JS (2 środkowe wiersze) wprowadź: var patt1=new RegExp("^2[\+]?$|^[3-5][+-]?$|^6[\-]?$");Jak widzisz: - w 1-szej instrukcji jest "moje" wyrażenie regułowe, - w 2-gim wierszu jest sama czwórka. 3. Kliknij klawisz "Edit and Click Me" (nad lewym oknem). 4. W prawym oknie (wyniku) pokaże się "true". Tak więc nie rozumiem Twojego wpisu, że "wychodzi false". Co do "dozwolenia przecinków" - skoro robisz split "po przecinkach", to: - przecinki są separatorami, - w wynikowej tablicy masz segmenty tekstu "od przecinka do przecinka". Tak więc przecinki: - będą w polu w formularzu, - po splicie (w elementach tablicy) - w ogóle ich nie będzie. Być może wpisujący tekst wpisze jeszcze spacje, więc z każdej wartości w tablicy: - najpierw usuń pocz. / końcowe spacje (trim), - dopiero potem sprawdzaj wyrażeniem regułowym. Ten post edytował Valdi_B 22.02.2011, 21:40:56 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 3 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Aha... czyli mogę to zrobić tak:
przebiegam po każdej ocenie poprzez foreach przecinki wywalam poprzez emplode i co dalej? Bo nie wiem, czy zrobić: jeżeli ocena nie równa się wyrażenie regularne to przerywa i cośtam robi... czy jakoś inaczej? Proszę, weś napisz kawałek kodu w pliku php dla podpowiedzi ;] |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 30 Dołączył: 19.02.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Poniżej kompletny przykład obróbki ocen i w JS i w PHP.
JavaScript nie ma "własnej" funkcji trim, więc trzeba ją zaprogramować samemu. Oczywiście - fragment dot. "skonsumowania" ocen musisz przerobić wg swoich potrzeb. Ten post edytował Valdi_B 23.02.2011, 10:04:27 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 224 Pomógł: 3 Dołączył: 24.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
No, i takich właśnie ludzi lubię! Chętnych do pomocy!
Oprócz tego, że nie dałeś do wyrażenia 1,1+,2- to wszystko ok... No i ucznia skasowałem bo niepotrzebny był... Daję , że pomogłeś |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 05:01 |