Próbuję uzyskać wartości wszystkich pól wyboru, które są obecnie zaznaczone i przechowywać je w tablicy. Oto mój dotychczasowy kod:
$("#merge_button").click(function(event){
event.preventDefault();
var searchIDs = $("#find-table input:checkbox:checked").map(function(){
return $(this).val();
});
console.log(searchIDs);
});
Jednak daje to więcej niż potrzebuję. Nie tylko dostaję wartości, ale także inne rzeczy, których nie chcę.
["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002", prevObject: jQuery.fn.jQuery.init [3], kontekst: dokument, jquery: "funkcja… 1.9.1", konstruktor: funkcja…
Chciałbym tylko ID (w tym przypadku pierwsze 3 pozycje).
Używając $.each
i wypychając wartości do tablicy, otrzymuję pożądane dane wyjściowe:
$("#find-table input:checkbox:checked").each(function(){ myArray.push($(this).val()); })
["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002"]
Jednak chciałbym użyć $.map
, ponieważ oszczędza mi linię kodu i jest ładniejszy.
Dzięki
źródło
$.map
. Dzięki za rozwiązanie, działa..get()
jest potrzebny, gdy funkcja zwraca wartość.val()
z każdego elementu w kolekcji jQuery. Czy to dlatego, żemap
zamienia go z powrotem w obiekt jQuery przed przekazaniem go dosearchIDs
?DEMO: http://jsfiddle.net/PBhHK/
Po prostu wywołaj get (), a otrzymasz tablicę tak, jak jest zapisana w specyfikacji: http://api.jquery.com/map/
źródło
Musisz dodać
.toArray()
na końcu swojej.map()
funkcjiDemo: http://jsfiddle.net/sZQtL/
źródło
Trochę refaktoryzowałem twój kod i wydaje mi się, że przyszedłem z rozwiązaniem, którego szukałeś. Zasadniczo zamiast ustawiania
searchIDs
wynikać z po.map()
prostu wstawiłem wartości do tablicy.Stworzyłem skrzypce z uruchomionym kodem.
źródło
Ten pracował dla mnie!
źródło
Wymagane, aby elementy formularza nazwane w kodzie HTML jako tablica były tablicą w obiekcie javascript, tak jakby formularz został faktycznie przesłany.
Jeśli istnieje formularz z wieloma polami wyboru, takimi jak:
Wynikiem jest obiekt z:
I jest tu mnóstwo odpowiedzi, które pomogły ulepszyć mój kod, ale były albo zbyt złożone, albo nie dokładnie tego chciałem: Konwertuj dane formularza na obiekt JavaScript za pomocą jQuery
Działa, ale można go ulepszyć: działa tylko na tablicach jednowymiarowych, a wynikowe indeksy mogą nie być sekwencyjne. Właściwość length tablicy zwraca następny numer indeksu jako długość tablicy, a nie rzeczywistą długość.
Mam nadzieję, że to pomogło. Namaste!
źródło
źródło
Nie używaj „każdego”. Służy do operacji i zmian w tym samym elemencie. Użyj „map”, aby wyodrębnić dane z treści elementu i użyć ich w innym miejscu.
źródło
map
źródło