Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery]Troche inna walidacja formularza, Tabs+Validation=PROBLEM
lukas_nowicki
post 3.04.2009, 21:36:30
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 1
Dołączył: 20.09.2006

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


Witam,

Chciałbym połączyć ze sobą takie oto moduły jquery:
  1. Tabs
  2. Validation

W taki sposób żeby użytkownik przed przejściem do zakładki n+1 musiał wypełnić w 100% poprawnie zakładkę n. Niestety nie wiem jak ten problem ugryźć...
Liczę na Waszą drobną pomoc w postaci wskazówek
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
DirectPL
post 4.04.2009, 13:43:56
Post #2





Grupa: Zarejestrowani
Postów: 28
Pomógł: 2
Dołączył: 5.09.2008

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


No więc tak - na szybko taki algorytm winksmiley.jpg

1. w zakładce n=1 masz formularz.
2. gdy user kliknie na kolejną zakładkę n+1 (w tym wypadku jest to 2 zakładka) następuje wywołanie funkcji:
tworzysz nową funkcję w javascriptcie a w jej zawartości dajesz kod jQuery z Validation. Jeżeli moduł Validation zwróci "true" - czyli że formularz jest poprawnie wypełniony to wtedy może otworzyć drugą zakładkę.
3. i tak po kolei z zakładkami.

Mam nadzieję, że mnie zrozumiesz.
Go to the top of the page
+Quote Post
lukas_nowicki
post 6.04.2009, 21:18:11
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 1
Dołączył: 20.09.2006

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


Pisane z palca, ponieważ jestem na zajeciach...
  1. $('#tab1').click(function() {
  2. var isValid=... //tu daje walidacje
  3. if(isValid) //jezeli walidacja zawróci TRUE
  4. $tabs.tabs('select', 1); //przejdź do odpowiedniej zakładki
  5. return false;
  6. });

Analogicznie dla kolejnych zakładek
Może ktos sprawdzić czy dobrze zrozumiałem schemat podany przez DirectPL, któremu bardzo dziękuję za pomoc

Ok żeby nie musieć dla każdej zakładki tworzyć osobnego kodu wymyśliłem coś takiego:
  1. var tabs= $("#tabs").tabs({
  2. select: function(event, ui)
  3. {
  4. var selected = $('#tabs').tabs('option', 'selected'); // sprawdza id zakladki
  5. var isValid = $('#formularz'+selected).valid(); // walidacja formularza w konkretnej zakladce
  6. return isValid;
  7. }
  8. });


I niestety to nie działa kiedy w każdej z zakładek mam osobny formularz o id "formularz1",formularz2" etc.
Jeżeli dam :
  1. var isValid = $('#formularz').valid();

I wszystkie zakładki podepnę pod jeden formularz wszystko jest teoretycznie ok ale ja chcę sprawdzać poprawność w każdej z zakładek z osobna, a nie w całości od razu.

Jak temu zaradzic?
Go to the top of the page
+Quote Post
DirectPL
post 8.04.2009, 18:52:58
Post #4





Grupa: Zarejestrowani
Postów: 28
Pomógł: 2
Dołączył: 5.09.2008

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


Wieczorkiem do tego siądę. Dobrze by było jakbyś podesłał kod strony, bo szczerze powiedziawszy mam w głowie algorytm, ale merytocznie trza chwile pomyśleć.

Z tymi formularzami.

tab1 = form1
tab2 = form2

Więc klikasz na tab2 która zczytuje z klikniętego elementu jego ID i teraz robisz kilka instrukcji

  1. var formularz;
  2.  
  3. if(id == 'tab2')
  4. {
  5. formularz = 1;
  6. if(funkcja()) /* funkcja to funkcja która sprawdza poprzedni formularz formularz... */
  7. {
  8. $.('tab2content').addClass('visible');
  9. } else { /* no i tu może się jakiś warning wyświetlać, że nie uzupełniłeś formularza 1 */ }
  10. }


i dalej dajesz kolejne sprawdzenia. i sprawdzasz form zawsze n-1 od taba.

Ten post edytował DirectPL 8.04.2009, 18:53:45
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: 24.07.2025 - 21:24