Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]Dynamiczne pola formularza + walidacja pól = dziwne cachowanie
Elber
post
Post #1





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

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


Witam,

mam problem, mam formularz który po wybraniu selecta bez przeładowania strony wysyła info do pliku php i odbiera dodatkowe pola do tego formularza. Próbuję teraz napisać prostą funkcję w JS która sprawdzi czy jest dane pole i jak jest czy jest puste, jak jest puste to alert ... ale dzieją się dziwne rzeczy, otóż np.

Wybieram coś z selekta i dostaje pole a, b i c klikam żeby sprawdziło i wyskakuje że pola są puste, zmieniam selecta stare pola się usuwają i dostaje zamiast nich pola d, e, f klikam żeby sprawdziło i teraz pola a,b,c,d,e,f są puste ... tylko że ich już nie ma i nie powinno tego pokazać ;/ Czym to jest spowodowane ?

Pola sprawdzam w ten sposób:

Kod
if(field.pole_a && field.pole_a.value == ""){
        alert('Pole a jest puste');
}



field(to zmienna z zawartością formularza)

Ten post edytował Elber 4.03.2012, 00:03:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


rzeczywiście element jest gdzieś keszowany (w firebugu nie znalazłem gdzie to jeszcze siedzi) choć go nie ma w drzewie DOM - i właśnie tutaj masz rozwiązanie a jQuery wyżej źle urzywałeś...

by sprawdzić czy w znalezionym formularzu jest w drzewie DOM element o okreslonym atrybucie name możesz w czystym js wyszukać:
ff.querySelector('[name=pole_a]'); // zwróci element lub null
w jQ można to zapisać w ten sposób:
$('[name=pole_a]', field);
gdzie drugi argument oznacza kontekst wyszukiwania... jednak nawet jeśli tablica będzie pusta, to konwersja obiektu jQ do wartości bool zawsze zwróci true...
a więc po prostu musisz sprawdzać własność length gdzie 0 zostanie skonwertowane do false a każda inna wartość na true lub sprawdzaj pierwszy element jQ gdzie jeśli go nie ma zwróci undefined a jeśli jest zwróci Ci element;
$('[name=pole_a]', field).length; // liczba znalezionych elementów
$('[name=pole_a]', field)[0]; // pierwszy element tablicy...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.10.2025 - 08:00