Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery]Troche inna walidacja formularza
Forum PHP.pl > Forum > Po stronie przeglądarki
lukas_nowicki
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
DirectPL
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.
lukas_nowicki
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?
DirectPL
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.