Avatar billede codeadmin Nybegynder
18. november 2012 - 02:45 Der er 21 kommentarer og
1 løsning

sum af input felter

Hej

Har fået bikset nedenstående sammen hvilket virker efter hensigten.

Men problemet er bare på den side hvor det skal være der har jeg "dynamiske" felter (starter med et input felt også kan du få flere om nødvendigt) og ligeså snart der ikke er en af num variablerne så kan den ikke finde ud af det :/


Så hvad gør man så?
Maks antal linjer er 20 derfor de går dertil hvis.



KOde:

<input type="text" id="Num1" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num2" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num3" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num4" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num5" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num6" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num7" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num8" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num9" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num10" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num11" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num12" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num13" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num14" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num15" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num16" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num17" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num18" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num19" value="0" onblur="recalculateSum();"/><br />
<input type="text" id="Num20" value="0" onblur="recalculateSum();"/><br />

<span>=</span>
<input type="text" id="Sum" value="0"/>
<script>

    function recalculateSum()
    {
        var num1 = parseInt(document.getElementById("Num1").value);
        var num2 = parseInt(document.getElementById("Num2").value);
        var num3 = parseInt(document.getElementById("Num3").value);
        var num4 = parseInt(document.getElementById("Num4").value);
        var num5 = parseInt(document.getElementById("Num5").value);
        var num6 = parseInt(document.getElementById("Num6").value);
        var num7 = parseInt(document.getElementById("Num7").value);
        var num8 = parseInt(document.getElementById("Num8").value);
        var num9 = parseInt(document.getElementById("Num9").value);
        var num10 = parseInt(document.getElementById("Num10").value);
        var num11 = parseInt(document.getElementById("Num11").value);
        var num12 = parseInt(document.getElementById("Num12").value);
        var num13 = parseInt(document.getElementById("Num13").value);
        var num14 = parseInt(document.getElementById("Num14").value);
        var num15 = parseInt(document.getElementById("Num15").value);
        var num16 = parseInt(document.getElementById("Num16").value);
        var num17 = parseInt(document.getElementById("Num17").value);
        var num18 = parseInt(document.getElementById("Num18").value);
        var num19 = parseInt(document.getElementById("Num19").value);
        var num20 = parseInt(document.getElementById("Num20").value);
       
       
        document.getElementById("Sum").value = num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8 + num9 + num10 + num11 + num12 + num13 + num14 + num15 + num16 + num17 + num18 + num19 + num20;

    }

</script>
Avatar billede olsensweb.dk Ekspert
18. november 2012 - 11:33 #1
jeg ville anvende name attributten som et array, og hente array'et med getElementsByName, og lave en simpel for løkke der løber arrayet igennem og ligger tallene sammen
attributten id="NumX kan du slette hvs du ike anvender den til noget andet


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <title></title>
    <style type="text/css">
    </style>
    <script type="text/javascript">
function recalculateSum(){   
    var sum = 0;
    var aNodeList = document.getElementsByName("Num[]");
    var lng = aNodeList.length;     
    for(j=0; j<lng; j++){
        sum +=  parseInt(aNodeList[j].value);
    }
    document.getElementById("Sum").value = sum;       
}
   
    </script>
</head>
<body>
<input type="text" name="Num[]" id="Num1" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num2" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num3" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num4" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num5" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num6" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num7" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num8" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num9" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num10" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num11" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num12" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num13" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num14" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num15" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num16" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num17" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num18" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num19" value="0" onblur="recalculateSum();"/><br />
<input type="text" name="Num[]" id="Num20" value="0" onblur="recalculateSum();"/><br />
<span>=</span>
<input type="text" id="Sum" value="0"/>
</body>
</html>
Avatar billede olebole Juniormester
18. november 2012 - 18:32 #2
<ole>

En lidt mere 'sparsommelig' version kunne se sådan ud:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
</style>
<script type="text/javascript">
function recalculateSum(elm) {
    var currSum = elmDispl.value*1,
    prevValue = elm.getAttribute("val")*1;
    currValue = elm.value*1;
    if (prevValue!==currValue) {
        elmDispl.value = currSum + (prevValue+currValue);
    }
}
function setFocus(elm) {
    elm.setAttribute("val", elm.value);
    elm.select();
}

var nSum = 0, elmDispl = null;
window.onload = function(){
    elmDispl = document.getElementById("Sum");
}
</script>
</head>
<body>
<input type="text" name="Num[]" id="Num1" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num2" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num3" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num4" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num5" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num6" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num7" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num8" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num9" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num10" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num11" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num12" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num13" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num14" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num15" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num16" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num17" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num18" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num19" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<input type="text" name="Num[]" id="Num20" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
<span>=</span>
<input type="text" id="Sum" value="0">
</body>
</html>

/mvh
</bole>
Avatar billede codeadmin Nybegynder
18. november 2012 - 22:40 #3
ronols & olebole: Begge virkelige nøjagtig som de skal. Ved ikke hvilken en som er den mest rigtige.

I er begge berettiget til point så et svar fra jer begge skal være på sin plads ;)

Tak for hjælpen
Avatar billede codeadmin Nybegynder
18. november 2012 - 22:53 #4
Åh nej - nu til en fejl 40 :/

Bruger name fra input felterne i det videre forløb ved en GET funktion - kan man gøre noget så jeg fortsat kan have de "unike" input navne?
Avatar billede olebole Juniormester
19. november 2012 - 03:55 #5
Min version bruger ikke name attributten til noget, så den kan du bruge, som du ønsker.

Jeg samler ikke point, så de går ubeskåret til ronols  =)
Avatar billede olsensweb.dk Ekspert
19. november 2012 - 10:17 #6
man kan vel grundlæggende skrive coden så kort
<script type="text/javascript">
function recalculateSum(elm) {
    var sumelm = document.getElementById("Sum");   
    var sum = parseInt(sumelm.value) + parseInt(elm.value);   
    sumelm.value = sum;       
}
function setFocus(elm) {
    elm.select();
}
</script>

<input type="text" id="Num1" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>
...
<input type="text" id="Num20" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)"><br>

#4 jeg ville overveje at bruge name array istedet for unikke name attr (name="Num1 - Num20"), hvilke gør det betydelig nemmere serverside IMHO, men indrømmet jeg har en svaghed for array, hvor det giver mening, som her.

@codeadmin sjovt du har fået lov at beholde det brugernavn, når man tænker på reglerne for brugeroprettelse
1 Brugeroprettelse -> 4
Brugernavnet må ikke indeholde eller minde om Admin eller CoAdmin, og må desuden heller ikke indeholde diverse ukvemsord, ord der kan være nedladende, racistiske, seksuelle eller lignende. Ligesom indlæg på Eksperten.dk skal holdes i en sober tone, skal brugernavnet også holdes i en sober tone. Det er heller ikke tilladt at benytte navnet på et domæne (f.eks. www_domæne_dk eller domæne_dk) som brugernavn.

jeg kan se andre brugere har overtråt det med domainet, så den regl skal vi nok ikke hænge os i
Avatar billede olebole Juniormester
19. november 2012 - 19:45 #7
@ronols: Nej dén holder ikke  =)

*) I første felt skriver jeg 2 - 'Total' viser 2.
*) I Andet felt skriver jeg 3 - 'Total' viser 5.
*) Jeg retter første felt til 1 - 'Total' viser nu 6.

Det er ikke korrekt  =)

Desuden er du vist kommet til at bruge id i stedet for name attributten. Det er vist blot en 'tankefisk'  *o)

I øvrigt kan sagtens bruge array og specifik navngivning samtidig:

<input name="farve['sort']" ...>
<input name="farve['hvid']" ...>
<input name="farve['brun']" ...>

Så ligger alle inputs i $_POST['farve'] - og serveracriptet er ikke afhængigt af, hvilken rækkefølge felterne var skrevet i på siden med formularen.
Avatar billede olebole Juniormester
19. november 2012 - 19:48 #8
Hvad regler angår, vil det måske ændre sig, hvis IDG en dag i fremtiden skulle finde på at ansætte en voksen og ansvarlig administrator af Eksperten. Det er der desværre ingen tegn på, vil ske  :o|
Avatar billede olsensweb.dk Ekspert
19. november 2012 - 20:19 #9
> *) Jeg retter første felt til 1 - 'Total' viser nu 6.
> Det er ikke korrekt  =)

* den havde jeg ikke lige tænk over :(, det var en tankefisk
(har du prøvet din egen ??)

>Desuden er du vist kommet til at bruge id i stedet for name attributten.
det var bevist, da spørgeren bruger name til noget andet i programmet, ved ikke hvad, som han skriver i #4
Bruger name fra input felterne i det videre forløb ved en GET funktion - kan man gøre noget så jeg fortsat kan have de "unike" input navne?

>Så ligger alle inputs i $_POST['farve']
helt klart en mulighed spørgeren også kunne overveje.

>hvis IDG en dag i fremtiden skulle finde på at ansætte en voksen og ansvarlig administrator af Eksperten.
nu er det jo snart jul :), men jeg tror desværrer ikke på julemanden
Avatar billede olebole Juniormester
19. november 2012 - 20:36 #10
"(har du prøvet din egen ??)" >> Du må være gal! Rigtige webudviklere tester ikke ... de skammer sig! *Lyden af blafrende, røde ører*  :D

Talking about 'tankefisk', så fik jeg da vist lige fremstillet en velvoksen klumpfisk dér! Funkstionen recalculateSum skal selvfølgelig se sådan ud:

function recalculateSum(elm) {
    var currSum = elmDispl.value*1,
    prevValue = elm.getAttribute("val")*1;
    currValue = elm.value*1;
    if (prevValue!==currValue) {
        elmDispl.value = currSum + (-prevValue+currValue);
    }
}

Feltets eventuelle værdi skal naturligvis fratrækkes totalen, når feltet får fokus - og inden vi lægger den nye værdi til  =)

Note to ego: "Test dit shit!"  *D
Avatar billede codeadmin Nybegynder
19. november 2012 - 22:04 #11
har et script som kan automatisk indsætte en række mere i min html tabel via dette script:

        $(document).ready(function($)
        {
            // trigger event when button is clicked
            $("button").click(function()
            {
                // add new row to table using addTableRow function
                addTableRow($("table"));
                // prevent button redirecting to new page
                return false;
            });
       
            // function to add a new row to a table by cloning the last row and
            // incrementing the name and id values by 1 to make them unique
            function addTableRow(table)
            {
                // clone the last row in the table
                var $tr = $(table).find("tbody tr:last").clone();
                // get the name attribute for the input and select fields
                $tr.find("input,select").attr("name", function()
                {
                    // break the field name and it's number into two parts
                    var parts = this.id.match(/(\D+)(\d+)$/);
                    // create a unique name for the new field by incrementing
                    // the number for the previous field by 1
                    return parts[1] + ++parts[2];
                // repeat for id attributes
                }).attr("id", function(){
                    var parts = this.id.match(/(\D+)(\d+)$/);
                    return parts[1] + ++parts[2];
                });
                // append the new row to the table
                $(table).find("tbody tr:last").after($tr);
            };
        });




    <tbody><tr>
        <td height="26" width="120" valign="top" align="center"><input type="text" name="beskrivelse1" id="beksrivelse1" style="width: 300px" /></td>
        <td height="26" width="120" valign="top" align="center"><input type="text" name="antal1" id="antal1" style="width: 100px" onChange="updatesum()" /></td>
        <td height="26" width="120" valign="top" align="center"><input type="text" name="pris1" id="pris1" style="width: 100px" onChange="updatesum()" /></td>
        <td height="26" width="120" valign="top" align="center"><input type="text" name="pris_total1" id="pris_total1" style="width: 100px" id="Num1" onfocus="setFocus(this)" onblur="recalculateSum(this)" onChange="updatesum()" /></td>
    </tr></tbody>


Dette den sætter ind hvor den opdatere alle 1 taller til 2,,3,4,5 osv.

Jeres funktioner fra ovenstående lægger ikke pris total sammen i sum feltet men virker i mit test eksempel. Tror det fordi den ikke lave Num1, Num2, Num3 osv.
Scriptet var jeg havde som udgangspunkt er fundet på nettet og forstanden på javascript er lille så ved ikke hvordan jeg får opdatere mit script til den også skal gøre det samme med Num id'erne.

Håber i kan hjælpe med dette også :/




Ang. mit navn - har heddet dette længe, og ændre det selvfølgelig såfremt admin beder mig om det ;)


Nogle som kan fortælle mig hvordan jeg laver de der "kode" felter? gøre det noget mere overskueligt?
Avatar billede olsensweb.dk Ekspert
19. november 2012 - 23:05 #12
 <input type="text" name="pris_total1" id="pris_total1" style="width: 100px" id="Num1" ..... 

mangler value ="0" -> der skal jo være noget at regne på 
hvilke id syntes du vi skal anvende ??
id skal være unik, og der må kun være én id pr element
læg dit style ud i css


<script type="text/javascript">
var prevValue;
function recalculateSum(elm) {
    var sumelm = document.getElementById("Sum");   
    var sum = parseInt(sumelm.value) + parseInt(elm.value) - prevValue;   
    sumelm.value = sum;       
}
function setFocus(elm) {
    prevValue = parseInt(elm.value);
    elm.select();
}

.....
</script>


<table>
<thead>
<tr>
    <td>beskrivelse</td>
    <td>antal</td>
    <td>pris</td>
    <td>pris_total</td>
    </tr>
</thead>
<tbody>
    <tr>
    <td><input type="text" name="beskrivelse1" id="beksrivelse1"/></td>
    <td><input type="text" name="antal1" id="antal1"  onChange="updatesum()" /></td>
    <td><input type="text" name="pris1" id="pris1"  onChange="updatesum()" /></td>
    <td><input type="text" name="pris_total1" id="pris_total1" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)" /></td>
    </tr>
    <tr>
    <td><input type="text" name="beskrivelse2" id="beksrivelse2"  /></td>
    <td><input type="text" name="antal2" id="antal2"  onChange="updatesum()" /></td>
    <td><input type="text" name="pris2" id="pris2"  onChange="updatesum()" /></td>
    <td><input type="text" name="pris_total2" id="pris_total2" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)" /></td>
    </tr>
</tbody>
</table>   

<span>=</span>
<input type="text" id="Sum" value="0">


kan pris_total ikke være et komma tal ??, (parseFloat)
Avatar billede codeadmin Nybegynder
19. november 2012 - 23:49 #13
Har nu indsat value="0" - gjorde ikke udfaldet.

I det script jeg lagde op har jeg en funktion der hedder addTableRow
som giver mig en "linje" mere med beskrivelse, antal, pris, pris_total. Den opdatere ligeledes den 1 taller til 2 hvis det er linje 2 og opefter.

Kan man ikke få den til at gøre id="Num1" til id="Num2" et næste linje osv?

Style skal nok komme i en css fil det kun i mit test jeg har den med. Burde ikke gøre forskellen?




Min test fil ser således ud nu:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
function updatesum() {
document.form.pris_total1.value = (document.form.antal1.value) * (document.form.pris1.value);
document.form.pris_total2.value = (document.form.antal2.value) * (document.form.pris2.value);
document.form.pris_total3.value = (document.form.antal3.value) * (document.form.pris3.value);
document.form.pris_total4.value = (document.form.antal4.value) * (document.form.pris4.value);
document.form.pris_total5.value = (document.form.antal5.value) * (document.form.pris5.value);
document.form.pris_total6.value = (document.form.antal6.value) * (document.form.pris6.value);
document.form.pris_total7.value = (document.form.antal7.value) * (document.form.pris7.value);
document.form.pris_total8.value = (document.form.antal8.value) * (document.form.pris8.value);
document.form.pris_total9.value = (document.form.antal9.value) * (document.form.pris9.value);
document.form.pris_total10.value = (document.form.antal10.value) * (document.form.pris10.value);
document.form.pris_total11.value = (document.form.antal11.value) * (document.form.pris11.value);
document.form.pris_total12.value = (document.form.antal12.value) * (document.form.pris12.value);
document.form.pris_total13.value = (document.form.antal13.value) * (document.form.pris13.value);
document.form.pris_total14.value = (document.form.antal14.value) * (document.form.pris14.value);
document.form.pris_total15.value = (document.form.antal15.value) * (document.form.pris15.value);
document.form.pris_total16.value = (document.form.antal16.value) * (document.form.pris16.value);
document.form.pris_total17.value = (document.form.antal17.value) * (document.form.pris17.value);
document.form.pris_total18.value = (document.form.antal18.value) * (document.form.pris18.value);
document.form.pris_total19.value = (document.form.antal19.value) * (document.form.pris19.value);
document.form.pris_total20.value = (document.form.antal20.value) * (document.form.pris20.value);

}


function recalculateSum(elm) {
    var currSum = elmDispl.value*1,
    prevValue = elm.getAttribute("val")*1;
    currValue = elm.value*1;
    if (prevValue!==currValue) {
        elmDispl.value = currSum + (prevValue+currValue);
    }
}
function setFocus(elm) {
    elm.setAttribute("val", elm.value);
    elm.select();
}

var nSum = 0, elmDispl = null;
window.onload = function(){
    elmDispl = document.getElementById("Sum");
}


  $(":date").dateinput();
</script>
<script>

       
        $(document).ready(function($)
        {
            // trigger event when button is clicked
            $("button").click(function()
            {
                // add new row to table using addTableRow function
                addTableRow($("table"));
                // prevent button redirecting to new page
                return false;
            });
       
            // function to add a new row to a table by cloning the last row and
            // incrementing the name and id values by 1 to make them unique
            function addTableRow(table)
            {
                // clone the last row in the table
                var $tr = $(table).find("tbody tr:last").clone();
                // get the name attribute for the input and select fields
                $tr.find("input,select").attr("name", function()
                {
                    // break the field name and it's number into two parts
                    var parts = this.id.match(/(\D+)(\d+)$/);
                    // create a unique name for the new field by incrementing
                    // the number for the previous field by 1
                    return parts[1] + ++parts[2];
                // repeat for id attributes
                }).attr("id", function(){
                    var parts = this.id.match(/(\D+)(\d+)$/);
                    return parts[1] + ++parts[2];
                });
                // append the new row to the table
                $(table).find("tbody tr:last").after($tr);
            };
        });
        </script>       
</head>
<body>
<form action="test.php" method="get" enctype="text/plain">

<table>
<thead>
<tr>
    <td>beskrivelse</td>
    <td>antal</td>
    <td>pris</td>
    <td>pris_total</td>
    </tr>
</thead>
<tbody>
    <tr>
    <td><input type="text" name="beskrivelse1" id="beksrivelse1"/></td>
    <td><input type="text" name="antal1" id="antal1"  onChange="updatesum()" /></td>
    <td><input type="text" name="pris1" id="pris1"  onChange="updatesum()" /></td>
    <td><input type="text" name="pris_total1" id="pris_total1" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)" /></td>
    </tr>
    <tr>
    <td><input type="text" name="beskrivelse2" id="beksrivelse2"  /></td>
    <td><input type="text" name="antal2" id="antal2"  onChange="updatesum()" /></td>
    <td><input type="text" name="pris2" id="pris2"  onChange="updatesum()" /></td>
    <td><input type="text" name="pris_total2" id="pris_total2" value="0" onfocus="setFocus(this)" onblur="recalculateSum(this)" /></td>
    </tr>
</tbody>
</table>   

<span>=</span>
<input type="text" id="Sum" value="0" />
<input type="submit" value="SEND" />
</form>

</body>
</html>


Nu kan den ikke gange antal med pris mere? tilgengæld ligger den fint total'erne sammen
Avatar billede codeadmin Nybegynder
19. november 2012 - 23:49 #14
Jo ville godt kunne have to decimaler på mine priser, men det tør jeg ikke kaste mig ud i nu - det her gør mig rigelig skallet allerede :)
Avatar billede olsensweb.dk Ekspert
20. november 2012 - 01:46 #15
>Kan man ikke få den til at gøre id="Num1" til id="Num2" et næste linje osv?
det er det der sker her

.attr("id", function(){
    var parts = this.id.match(/(\D+)(\d+)$/);
    return parts[1] + ++parts[2];
}

dvs tager nuværende id navn og ligger 1 til tallet

jeg er gået tilbage til min gamle code med array, og lavet en vertion hvor jeg anvender navne array, og tilpasset js til det, så kan du starte med den
demo : http://experten.olsensweb.dk/972439/codeadmin_ronols.html

den anden vertion vil jeg kigge på med friske øjne
Avatar billede codeadmin Nybegynder
20. november 2012 - 02:02 #16
Se nu virker det som var hensigten ;)

MEN :/ når jeg trykker send brugte jeg $_GET[pris1] $_GET[pris2] osv for de tal jeg nu skulle bruge.

Men ovenstående kan jeg ikke gøre sådan - hvordan får jeg så fat i de forskellige værdier?
Avatar billede codeadmin Nybegynder
20. november 2012 - 02:12 #17
Bruger name til at få deres værdier med $_GET[pris1] $_GET[pris2] osv.

Hvordan kan jeg så hente dem? Kan se det et array men når jeg printer en fx $_GET[beskrivelse] - må se om jeg selv kan finde ud af at hente data fra et array ;)

Du skal have mange tak for hjælpen indtil videre ;)
Avatar billede codeadmin Nybegynder
20. november 2012 - 02:13 #18
hmm troede ikke den havde postet første besked - derfor "dobbelt" post
Avatar billede codeadmin Nybegynder
20. november 2012 - 02:15 #19
fangede den med array hvordan jeg hiver de forskellige resultater ;)

vil prøve at smide det ind i den samlede kode og se om det virker efter hensigten ;)
Avatar billede olsensweb.dk Ekspert
20. november 2012 - 02:24 #20
prøv dette

test.php
<?php
$beskrivelse = $_POST['beskrivelse'];
$antal = $_POST['antal'];
$pris = $_POST['pris'];
$Num = $_POST['Num'];
echo $Num[0]; // pris_total1
echo $Num[1]; // pris_total2
?>

jeg vil vælge at sende den over med post istedet for get, så bruger du get så ret det selv
Avatar billede codeadmin Nybegynder
20. november 2012 - 02:29 #21
get var egentlig det første tanke, men der er ingen ben i et ændre det - så det hermed gjort.

og det der er lige i øjet ;)
Avatar billede olsensweb.dk Ekspert
20. november 2012 - 12:36 #22
lidt små forbedringer

demo array vertion http://experten.olsensweb.dk/972439/codeadmin_ronols_ok.html
demo unik name vertion http://experten.olsensweb.dk/972439/codeadmin.html
aflæsning unik name vertion
<?php
$pris_total1 = $_POST[pris_total1];
$pris_total2 = $_POST[pris_total2];
echo $pris_total1; echo "<br>";
echo $pris_total2; echo "<br>";
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester