Mam stronę, na której typ danych wejściowych zawsze się zmienia i muszę uzyskać wartości w zależności od typu danych wejściowych. Czyli jeśli typ to radio to muszę dostać które jest zaznaczone a jeśli to checkbox to muszę to teraz które zaznaczam a jeśli to jest rozwijane to muszę wiedzieć które jest zaznaczone a ja czy tak tekst / obszar tekstowy Muszę znać wartości.
Masz jakiś pomysł, jak to zrobić?
Odpowiedzi:
EDYCJA 1 lutego 2013. Ze względu na popularność tej odpowiedzi i zmiany w jQuery w wersji 1.9 (i 2.0) dotyczące właściwości i atrybutów, dodałem kilka uwag i skrzypiec, aby zobaczyć, jak to działa podczas uzyskiwania dostępu do właściwości / atrybutów na wejściu, przyciski i niektóre opcje. Skrzypce tutaj: http://jsfiddle.net/pVBU8/1/
pobierz wszystkie dane wejściowe:
pobierz wszystkie typy wejść:
pobierz wartości:
UWAGA: .val () NIE jest tym samym, co: zaznaczone dla tych typów, dla których ma to znaczenie. posługiwać się:
EDYCJA 1 lutego 2013 - re: jQuery 1.9 użyj prop () nie attr (), ponieważ attr nie zwróci prawidłowych wartości dla właściwości, które uległy zmianie.
lub po prostu
aby uzyskać wartość czeku - cokolwiek to jest. lub po prostu użyj ': selected', jeśli chcesz tylko te, które SĄ zaznaczone.
EDYCJA: Oto inny sposób na uzyskanie typu:
EDIT2: Zwróć uwagę, że forma:
jest przekonany
które są równoznaczne z:
ale „wejście” jest pożądane, więc pobiera tylko dane wejściowe i nie używa uniwersalnego „*”, gdy
$(':radio')
używana jest forma z, która równa się$('*:radio');
EDYCJA 19 sierpnia 2015 r .:
$('input[type=radio]');
należy używać preferencji, ponieważ umożliwia to nowoczesnym przeglądarkom optymalizację wyszukiwania wejścia radiowego.EDYCJA 1 lutego 2013 za komentarz re: select elements @dariomac
zwróci wartość „wybierz jeden” lub „wybierz wiele” w zależności od atrybutu „wiele” i
zwraca to samo dla pierwszego zaznaczenia, jeśli istnieje. i
zwróci typ, jeśli istnieje, lub „howdy”, jeśli nie.
zwraca własność pierwszej z nich w DOM, jeśli istnieje, lub „nieokreślona”, jeśli żadna nie istnieje.
zwraca typ pierwszego, jeśli istnieje, lub błąd, jeśli żaden nie istnieje.
źródło
allInputs.attr('type');
otrzyma tylko typ wejściowy pierwszych elementów, tj.allInputs[0].attr('type');
jeśli w kolekcji jest więcej niż jeden element. To samo dotyczyallInputs.val();
Jeśli chcesz zrobić coś z typem lub wartością każdego elementu, musisz zrobić coś takiegoallInputs.each(function(){ var type = $(this).attr('type'); var val = $(this).val() });
Możesz wykonać następujące czynności:
źródło
Jeśli mówisz, że chcesz uzyskać wszystkie dane wejściowe wewnątrz formularza, które mają wartość, bez martwienia się o typ danych wejściowych, spróbuj tego:
Przykład: http://jsfiddle.net/nfLfa/
Teraz powinieneś mieć zestaw elementów wejściowych, które mają pewną wartość.
Możesz umieścić wartości w tablicy:
Lub możesz je serializować:
źródło
źródło
źródło
Najlepszym miejscem do rozpoczęcia poszukiwań jest http://api.jquery.com/category/selectors/
To da ci dobry zestaw przykładów.
Ostatecznie wybór elementów w DOM jest osiągany za pomocą selektorów CSS, więc jeśli myślisz o uzyskaniu elementu przez id, będziesz chciał użyć $ ('# elementId'), jeśli chcesz, aby wszystkie tagi wejściowe, użyj $ ('input') i na koniec część, którą myślę, że będziesz potrzebować, jeśli chcesz, aby wszystkie tagi wejściowe z typem pola wyboru, użyj $ ('input, [type = checkbox])
Uwaga: większość żądanych wartości znajduje się w atrybutach, więc selektor css atrybutów to: [nazwa_atrybutu = wartość]
Tylko dlatego, że poprosiłeś o listę rozwijaną obok pola listy, spróbuj wykonać następujące czynności:
Kod pochodzi z pamięci, więc prosimy o uwzględnienie drobnych błędów
źródło
Uwagi:
Zakładam, że istnieje dokładnie jeden element formularza, który może być albo obszarem tekstu, polem wprowadzania, formularzem wyboru, zestawem przycisków radiowych lub pojedynczym polem wyboru (będziesz musiał zaktualizować mój kod, jeśli potrzebujesz więcej pól wyboru).
Przedmiotowy element znajduje się wewnątrz elementu o identyfikatorze
container
(aby usunąć niejednoznaczności z innymi elementami na stronie).Kod zwróci wartość pierwszego znalezionego pasującego elementu. Ponieważ używam
:checked
i tak dalej, zawsze powinna to być dokładnie wartość tego, czego szukasz.źródło
Wydawałoby się, że funkcja attr jest coraz bardziej przestarzała
źródło
W mojej aplikacji skończyło się na dwóch różnych elementach mających ten sam identyfikator (źle). Jeden element to div, a drugi dane wejściowe. Próbowałem podsumować swoje dane wejściowe i zajęło mi trochę czasu, zanim zdałem sobie sprawę z podwójnych identyfikatorów. Umieszczając typ elementu, który chciałem, przed #, udało mi się pobrać wartość elementu wejściowego i odrzucić div:
Mam nadzieję, że to pomoże.
źródło
źródło
źródło