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%)
-----


niemal dobrze ale ucz się dobrych praktyk i nie szukaj po kilka razy tego samego w drzewie DOM
zapisz sobie wyszukiwanie do zmiennej np.
var jQ_inputs = $('[name=pole_a]', field);
i potem tą zmienną możesz wykożystać...
a dalej pierwszy element tablicy jest elementem drzewa DOM a nie obiektem jQ więc możesz sobie to wyszukiwanie zapisać do zmiennej (zapominając powyższe):
var input = $('[name=pole_a]', field)[0]; // albo będzie element albo undefined
i teraz tak jak robiłeś możesz gdyż masz element drzewa DOM:
if( input && input.value === "") {}

ale jeszcze w skrócie każdy pusty ciąg konwertuje się do false (ciąg ze spacją nie jest pusty ;p)
więc
var sMy = "";
!!sMy === false; // false - a więc !sMy === true
skrócony warunek:
if( input && !input.value) {}
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: 17.10.2025 - 14:37