Miałem sobie własny kod do walidacji javascript. Bardzo brzydka metoda (ale to dawno pisałem, działało dobrze, w końcu zdecydowałem się ulepszyć), mianowicie kod pobierał z ukrytego diva z formularza zestaw regułek, zapisanych w tym ukrytym divie w postaci tekstowej. Wszystkie formularze na stronie obsługiwane są przez jedną funkcję, która testuje funkcją walidującą formularz i potem decyduje czy puścić dane czy nie.
Funkcja walidująca do tej pory zwracała:
-
false
w przypadku kiedy wszystko jest ok
- obiekt w listą błędów w przypadku, kiedy był jakiś błąd
Wymieniłem funkcję walidującą na taką, pobierającą regułki z obiektu (który definiuję zaraz po formularzu), w dodatku funkcja zwraca:
-
true
kiedy wszystko ok
- obiekt, jak błąd
W funkcji obsługującej formularze naniosłem poprawkę, żeby "true" traktował jako powodzenie.
Ok, wyrzucam z jednego formularza tekstowe regułki, dodaję w formie obiektu, testuję - jest, działa aż miło!
Otwieram inną podstronę - z ciekawości klikam submit - i zonk. Pokazuje mi błędy wynikające z przeparsowania starych regułek o.O Stary kod był w komentarzu (nazwy funkcji te same), więc dla pewności go usunąłem całkiem - dalej to samo. "Działają" oba formularze, pomimo innej metody zapisu regułek używania tych samych plików, gdzie kod od parsowania regułek tekstowych jest wyrzucony całkiem. Nie może być to problem z cache, a nawet gdyby przeglądarka miała załapać nową wersję pliku na jednej podstronie, a potem wrócić do wersji z cache - to tu to odpada, bo cała strona to aplikacja ajaxowa, więc skrypty javascript ładowane są raz.
Póki co - nie wiem o co chodzi. Od godziny powinienem był się od tego oderwać, ale po prostu chciałem to skończyć i teraz stwierdzam, że to już jednak pora oderwać się od klawiatury.
Edit: Jednak jestem debilem.
Stare regułki nie były parsowane, nowych nie podałem, więc walidacja przepuszczała formularz bez niczego - to walidacja server-side zwracała te błędy :/ Jeszcze może gdyby nie odbywało się to w takim ułamku sekundy, że nie widać ajaxowego loadera - to bym się zorientował. Tytułowe WTF
było, ale, ech, moja wina..