Ich versuche, Werte aller derzeit aktivierten Kontrollkästchen abzurufen und in einem Array zu speichern. Hier ist mein Code bisher:
$("#merge_button").click(function(event){
event.preventDefault();
var searchIDs = $("#find-table input:checkbox:checked").map(function(){
return $(this).val();
});
console.log(searchIDs);
});
Dies gibt jedoch mehr aus als ich brauche. Ich bekomme nicht nur die Werte, sondern auch einige andere Dinge, die ich nicht will.
["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002", prevObject: jQuery.fn.jQuery.init [3], Kontext: Dokument, jQuery: ": Funktion:]
Ich möchte nur Ausweise (die ersten 3 Artikel in diesem Fall).
Durch Verwenden $.each
und Verschieben von Werten in ein Array erhalte ich die gewünschte Ausgabe:
$("#find-table input:checkbox:checked").each(function(){ myArray.push($(this).val()); })
[51729b62c9f2673e4c000004, 517299e7c9f26782a7000003, 51729975c9f267f3b5000002]
Ich würde es jedoch gerne verwenden $.map
, da es mir eine Codezeile erspart und hübscher ist.
Vielen Dank
quelle
$.map
. Danke für die Lösung, es funktioniert..get()
benötigt wird, wenn die Funktion das.val()
von jedem Element in der jQuery-Auflistung zurückgibt. Liegt das daran, dassmap
es wieder in ein jQuery-Objekt umgewandelt wird, bevor es übergeben wirdsearchIDs
?DEMO: http://jsfiddle.net/PBhHK/
Rufen Sie einfach get () auf und Sie haben Ihr Array so, wie es in den Spezifikationen beschrieben ist: http://api.jquery.com/map/
quelle
Sie müssen
.toArray()
am Ende Ihrer.map()
Funktion hinzufügenDemo: http://jsfiddle.net/sZQtL/
quelle
Ich habe Ihren Code ein wenig überarbeitet und glaube, ich bin mit der Lösung gekommen, nach der Sie gesucht haben. Anstatt die Einstellung
searchIDs
als Ergebnis der zu setzen, habe.map()
ich die Werte einfach in ein Array verschoben.Ich habe eine Geige mit dem laufenden Code erstellt.
quelle
Dieser hat für mich gearbeitet!
quelle
Die im HTML als Array genannten Formularelemente mussten ein Array im Javascript-Objekt sein, als ob das Formular tatsächlich gesendet worden wäre.
Wenn es ein Formular mit mehreren Kontrollkästchen gibt, z.
Das Ergebnis ist ein Objekt mit:
Und hier gibt es unzählige Antworten, die dazu beigetragen haben, meinen Code zu verbessern, aber sie waren entweder zu komplex oder wollten nicht genau das, was ich wollte: Konvertieren Sie Formulardaten mit jQuery in ein JavaScript-Objekt
Funktioniert, kann aber verbessert werden: Funktioniert nur mit eindimensionalen Arrays und die resultierenden Indizes sind möglicherweise nicht sequentiell. Die Länge-Eigenschaft eines Arrays gibt die nächste Indexnummer als Länge des Arrays zurück, nicht als tatsächliche Länge.
Hoffe das hat geholfen. Namaste!
quelle
quelle
Verwenden Sie nicht "jeder". Es wird für Operationen und Änderungen im selben Element verwendet. Verwenden Sie "map", um Daten aus dem Elementkörper zu extrahieren und an einer anderen Stelle zu verwenden.
quelle
map
quelle