• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Ein Blick aus dem Fenster verrät es: Der Lenz ist da. Passenderweise wird auch der Frühling unser Thema für das Foto des Monats. Hier geht es lang --> Klick

JavaScript/JQuery Summe von mehreren Inputs

Eisenherz

Idared
Registriert
27.05.10
Beiträge
27
Hallo,

ich bin nicht so der größte Javascript bzw. JQuery Experte, muss jetzt aber doch mal ein bisschen was darin machen. Allerdings fehlt mir gerade der Ansatz, wie ich das am besten Löse.

Ich habe eine Reihe von Input Feldern für Produkte, die nach folgendem Schema aufgebaut sind:

<input type="text" name="produkt[(int)ID][(int)FARBE][(int)GROESSE]" value=""> --> Anzahl

Es gibt mehrere Produkte, die jeweils mehrere Farben haben können.
Eine Farbe kann wiederum mehrere Größen haben, für die jeweils eine Anzahl eingegeben werden kann.
Wie kann ich jetzt die Gesamtsumme für die Anzahl innerhalb einer Farbe rausfinden?

Beispiel:

Produkt1 - Farbe 2 - Größe 20 => 5
Produkt1 - Farbe 2 - Größe 21 => 7
Produkt1 - Farbe 2 - Größe 22 => 3
--> Summe = 15

Bzw:
<input type="text" name="[2][6][15]" value="2">
<input type="text" name="[2][6][18]" value="2">
<input type="text" name="[2][6][19]" value="4">
--> Summe = 10

Wäre super, wenn mir da jemand einen Ansatz liefern könnte!

LG && Danke
 

DubiDuh

Zwiebelapfel
Registriert
20.05.08
Beiträge
1.288
Code:
var summe_farbe[1] = 0;
$('input[name~="produkt"]).each(function(){
    // Differentiate colors here

    // Sum up prices
    if($.isNumeric($(this).val())
        summe_farbe[1] += $(this).val();
});
 

Eisenherz

Idared
Registriert
27.05.10
Beiträge
27
Danke!

Hab mir mit einer Inspiration von Stackoverflow auch gerade was zusmamengebaut, was einfach alle inputs in einer TR scannt, die nicht ausgeschlossen sind. Vielleicht hilft es ja auch nochmal jemandem:

Code:
$(document).ready(function(){
    $("input").each(function() {
        var that = this; // fix a reference to the <input> element selected
        $(this).keyup(function(){
            newSum.call(that); // pass in a context for newsum():
                               // call() redefines what "this" means
                               // so newSum() sees 'this' as the <input> element
        });
    });
});

function newSum() {
  var sum = 0;
  var anzahl = 0;
  var thisRow = $(this).closest('tr');

  thisRow.find('td:not(.rechner) input:text').each( function(){
    anzahl = parseFloat(this.value);
    if(isNaN(anzahl)){ anzahl = 0;} // Keine Zahl = 0
    sum += anzahl;
  });

  gesamt = thisRow.find('td.rechner input:text.qty').val(sum).val();
  
  preis = thisRow.find('td.rechner input:hidden').val();
  
  ordereurgesamt = gesamt*parseFloat(preis);
  
  thisRow.find('td.rechner input:text.ordereurgesamt').val(ordereurgesamt);
  
}