webForumDet fria alternativet
Logga in / Bli medlem

Loopa igenom formulär och addera delsummor

JavaScript

2 svar · 409 visningar · startad av Annakay

Medlem sedan sep. 2003143 inlägg
Trådstart#1

Nu är jag närapå hjärndöd... :x

Kan någon hjälpa mig att fixa en funktion som vid en ändring i något formulärfält loopar igenom alla formulärfält och adderar värdena i de som har ett namn som börjar med "summa" och sen skriver ut det till ett textfält som heter "totalsumma"?

Blir det rätt om man har ett onChange-event på själva formuläret?

Formuläret är ett enkelt beställningsformulär med textfält som heter typ:
antal_produkt1
pris_produkt1
summa_produkt1
summa_frakt
totalsumma

Snälla snälla...

Medlem sedan aug. 20039 340 inlägg
#2
// Själva funktionen
function addera(){
    var z=document.forms["name_pa_din_form"].elements, sum=0;

    for (var i=0; i<z.length; i++)
        if (/summa/i.test(z[i].name) && ! /totalsumma/i.test(z[i].name))
            sum += parseInt(z[i].value);

    z["totalsumma"].value = sum;
}

// Lägg till funktionen till onkeyup-attributet på berörda rutor.
var z=document.forms["name_pa_din_form"].elements;

for (var i=0; i<z.length; i++)
    if (/summa/i.test(z[i].name) && ! /totalsumma/i.test(z[i].name))
        z[i].onkeyup = z[i].onchange = addera;

Koden är otestad, men testkörd i mitt huvud, så den ska fungera!

Medlem sedan sep. 2003143 inlägg
#3

Härligt! Du har räddat min dag, det där hade tagit mig flera veckor att klura ut... :)
Tusen tack!

256 ms totalt · 4 externa anrop · v20260731065814-full.50d4b5bd
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)