Avatar billede tinebn Nybegynder
04. marts 2009 - 23:10 Der er 15 kommentarer og
1 løsning

Subtotal (porto) skal trækkes 30 % fra

hej
jeg har et inputfelt der hedder porto = subtotal

Den har jeg fået til at regne alle input felter sammen til et samlet beløb... men nu er det så hvordan får jeg den til at trække en rabat på 30 % kan jeg * med 0,30 i javascript og så en - parseInt

antal1() aner jeg faktisk ikke hvorfor er der

bestillingsformular har jeg skrevet dette:!!!!
f.rabat.value=parseInt(f.porto.value)*0,30;

skulle gerne bare vise et felt med en udregning = 30 % af subtotal!!

mit rabat input felt hvor jeg kalder f.rabat
er sikkert, rigtig, rigtig forkert ?
rabat ;
  <input name="rabat" size="5"
  OnFocus="document.bestillingsformular.rabat.select();
document.bestillingsformular.rabat.antal1();" />


Hilsen Tine
Avatar billede majbom Novice
05. marts 2009 - 07:51 #1
det giver ikke meget mening, det du skriver synes jeg. kan du ikke poste noget sammenhængende kode i stedet for de små bidder dér?
Avatar billede tinebn Nybegynder
05. marts 2009 - 14:49 #2
Meget gerne!!!! Hjææælp

<script language="JavaScript">
<!--

function BeregnTotaler(){
        f=document.bestillingsformular;
        f.total1.value=parseInt(f.antal1.value)*1250;
        f.total2.value=parseInt(f.antal2.value)*2400;

f.porto.value=parseInt(f.total1.value)
          +parseInt(f.total2.value)
f.porto.value=parseInt(40)+ parseInt(f.porto.value);

*/ så ville jeg sætte denne kode ind her ???

f.rabat.value=parseInt(f.porto.value)*0,30; */
                ;}

Subtotal:&nbsp;&nbsp;
  <input name="porto" size="5"
    OnFocus="document.bestillingsformular.porto.select();
    document.bestillingsformular.porto.antal1();" />

*/ og så vil jeg have rabat her ???

Rabat &nbsp;
      <input name="rabat" size="5"
    OnFocus="document.bestillingsformular.rabat.select();
    document.bestillingsformular.rabat.antal1();" />
*/

<script language="JavaScript">
<!--
    f=document.bestillingsformular;
    f.antal1.value=0; f.antal2.value=0;
        f.rabat.value=0;  f.Porto.value=0;
    //-->

        Er jeg helt forkert på den, er det kode rigelig ? har    Undladt input for antal og totaler det virker nemlig!!
Avatar billede majbom Novice
05. marts 2009 - 14:59 #3
jeg synes det virker meget rodt din kode...

f.porto.value=parseInt(f.total1.value)
          +parseInt(f.total2.value)
f.porto.value=parseInt(40)+ parseInt(f.porto.value);


giver ikke så meget mening, først sætter du feltets værdi til én ting for derefter at sætte det til noget andet.

det burde virke med denne linje:

f.rabat.value=parseInt(f.porto.value)*0,30; */

men jeg kan ikke rigtig se hvad du vil opnå med følgende:

OnFocus="document.bestillingsformular.rabat.select();
    document.bestillingsformular.rabat.antal1();"

?
Avatar billede mclemens Nybegynder
05. marts 2009 - 15:01 #4
0,30 er 0.30 når du regner med JS (eller 0.3 da 0'et jo er overflødigt her) ... du kan så køre en (resultat).replace(".",","); for at resultat.ører til resultat,ører

Som splazz siger er det ikke helt til at gennemskue, da der mangler kode m.v., men er det noget i denne stil du leder efter ?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="content-type"

content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
window.onload=function(){
f=document.form1;var total=0;
for(i=1;f["pris"+i];i++)total+=parseFloat(f["pris"+i].value.replace(",","."));
f["subtotal"].value=(""+total).replace(".",",");
var rabat=(parseInt(total*0.3*100)/100);
f.rabat.value=(""+rabat).replace(".",",");
f["total"].value=(total-rabat+parseFloat(f.fragt.value.replace(",","."))+"").replace(".",",");
}
</script>


</head><body>

<form name="form1">
<input type="text" name="pris1" value="123,25">
<input type="text" name="pris2" value="321,56">
<input type="text" name="subtotal">
<input type="text" name="rabat">
<input type="text" name="fragt" value="3000,27">
<input type="text" name="total">
</form>

</body>
</html>
Avatar billede mclemens Nybegynder
05. marts 2009 - 15:02 #5
(glemte at opdatere)
Avatar billede mclemens Nybegynder
05. marts 2009 - 15:14 #6
Prøv at rette 0,30 til 0.30.
- Har du overvejet at rette nogle af input elementerne til readonly ? (readonly="readonly") eller evt. at lave nogle "div resultat" elementer hvor du retter firstChild.nodeValue (teksten) til, istedet for p.t. input feltets value ?
Avatar billede tinebn Nybegynder
05. marts 2009 - 17:08 #7
mine input felter til antal  som * med total  ser sådan ud

<input name="antal1" size="5" Onblur="BeregnTotaler()" />
   
             
  <input readonly="total1" name="total1" size="7"
  onfocus="document.bestillingsformular.antal1.select();
  document.bestillingsformular.antal1.focus();" />

Jeg kan se at mclemens har sat  value i input feltet ... det må vel gå ud på det sammen, som jeg har gjort med ??
  f.total1.value=parseInt(f.antal1.value)*1250;
her henter den antal og * pris og sætter totalen i mit inputfelt



Ok .

linie ... har jeg skrevet rigtig nok, og sat den rigtig nok i koden ?
f.rabat.value=parseInt(f.porto.value)*0,3;

og så den linie jeg tror der driller mig, den skal vel hente  min værdi fra inputfeltet name ="porto"? og så skal der vel ikke stå antal1() ??????
document.bestillingsformular.rabat.antal1();"

denne linie viser et o i inputfeltet fra start
eller er det misforstået, siden du spørger??

OnFocus="document.bestillingsformular.rabat.select();
Avatar billede tinebn Nybegynder
05. marts 2009 - 17:13 #8
Og undskyld men nu får i altså hele top koden!!

<script language="JavaScript">
<!--function BeregnTotaler(){
        f=document.bestillingsformular;
        f.total1.value=parseInt(f.antal1.value)*1250;
        f.total2.value=parseInt(f.antal2.value)*2400;
        f.total3.value=parseInt(f.antal3.value)*2400;
        f.total4.value=parseInt(f.antal4.value)*2400;
        f.total5.value=parseInt(f.antal5.value)*2400;
        f.total6.value=parseInt(f.antal6.value)*2400;
        f.total7.value=parseInt(f.antal7.value)*2400;
        f.total8.value=parseInt(f.antal8.value)*2400;
        etc.....
        f.total301.value=parseInt(f.antal301.value)*0;

        f.porto.value=parseInt(f.total1.value)
        +parseInt(f.total2.value)
        +parseInt(f.total3.value)
          +parseInt(f.total4.value)
          +parseInt(f.total5.value)
        +parseInt(f.total6.value)
        +parseInt(f.total7.value)
        +parseInt(f.total8.value)
          +parseInt(f.total9.value)
          +parseInt(f.total10.value)
        +parseInt(f.total11.value)
        +parseInt(f.total12.value)
        +parseInt(f.total13.value)
                  etc                        +parseInt(f.total301.value)

    f.porto.value=parseInt(40)+ parseInt (f.porto.value);
    f.rabat.value=parseInt(f.porto.value)*0,30;
                                    ;}
      //-->
      </script>
Avatar billede tinebn Nybegynder
05. marts 2009 - 17:33 #9
ok  .......
jeg kan godt se, at det ingen funktion har i rabat de linier
som du spørger til  splazz  ( har slettet dem helt )
OnFocus="document.bestillingsformular.rabat.select();
document.bestillingsformular.rabat.antal1();" />

men hvordan skal jeg så få den til at regne det ud ,når
denne linie er rigtig  ??

  f.rabat.value=parseInt(f.porto.value)*0,3;
Avatar billede mclemens Nybegynder
05. marts 2009 - 18:03 #10
- - - Hvorfor bruger du komma i 0,30
når man i javascript skal bruge et punktum.
Avatar billede mclemens Nybegynder
05. marts 2009 - 18:14 #11
parseInt() ved parseInt(40) giver ikke megen mening ...

Jeg ser det som noget ála:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
window.onload=function(){
        f=document.bestillingsformular;
        f.total1.value=parseInt(f.antal1.value)*1250; 
        for(i=2;f["total"+i]&&i<301;i++)f["total"+i].value=parseInt(f["antal"+i].value)*2400;
        f.total301.value=parseInt(f.antal301.value)*0;

        var total=0;for(i=1;f["total"+i];i++)total+=parseInt(f["total"+1].value);
        total+=40;
        f.porto.value=total;
    f.rabat.value=(total*0.30+"").replace(".",",");
}
</script>


</head><body>

<form name="bestillingsformular">
antal1<input type="text" name="antal1" value="1"><br>
antal2<input type="text" name="antal2" value="1"><br>
antal3<input type="text" name="antal3" value="1"><br>
antal301<input type="text" name="antal301" value="1"><br>
Total 1: <input type="text" name="total1"><br>
Total 2: <input type="text" name="total2"><br>
Total 3: <input type="text" name="total3"><br>
Total 301: <input type="text" name="total301"><br>
Porto: <input type="text" name="porto" value="300000"><br>
Rabat: <input type="text" name="rabat">
</form>

</body>
</html>
Avatar billede mclemens Nybegynder
05. marts 2009 - 18:17 #12
- Bemærk dog at total301 ikke kommer med i for(i=1;f["total"+i];i++)total+=parseInt(f["total"+1].value); optællingen, da der mangler elementer op til 301 ... den kunne selvfølgelig sættes til at checke alle elementer op til 301 istedet for at bremse ved manglende nr. i rækkefølgen ved at sige:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
window.onload=function(){
        f=document.bestillingsformular;
        f.total1.value=parseInt(f.antal1.value)*1250; 
        for(i=2;f["total"+i]&&i<301;i++)f["total"+i].value=parseInt(f["antal"+i].value)*2400;
        f.total301.value=parseInt(f.antal301.value)*0;

        var total=0;for(i=1;i<302;i++)if(f["total"+i])total+=parseInt(f["total"+1].value);
        total+=40;
        f.porto.value=total;
    f.rabat.value=total*0.3;
}
</script>


</head><body>

<form name="bestillingsformular">
antal1<input type="text" name="antal1" value="1"><br>
antal2<input type="text" name="antal2" value="1"><br>
antal3<input type="text" name="antal3" value="1"><br>
antal301<input type="text" name="antal301" value="1"><br>
Total 1: <input type="text" name="total1"><br>
Total 2: <input type="text" name="total2"><br>
Total 3: <input type="text" name="total3"><br>
Total 301: <input type="text" name="total301"><br>
Porto: <input type="text" name="porto" value="300000"><br>
Rabat: <input type="text" name="rabat">
</form>

</body>
</html>

(slettede også lige replace, den så ikke ud til at være nødvendig med de nuværende priser)
Avatar billede tinebn Nybegynder
05. marts 2009 - 19:13 #13
ÅÅÅHHH tak tak det virker

Jeg havde ikke set mit , for tude tåre!!!!

og så satte jeg  :

<input name="rabat" size="5" Onblur="BeregnTotaler()" / >

virker indtil nu !!
Avatar billede tinebn Nybegynder
05. marts 2009 - 19:35 #14
vil gerne lukke spørgsmål !!

Og mclemens... jeg skal have prøvet din kode, en anden dag.. ser noget nemmer ud, end det jeg har gjort.

takker igen
Avatar billede mclemens Nybegynder
05. marts 2009 - 20:38 #15
Velbekom, her er et svar :)
Avatar billede thomas_b Nybegynder
06. maj 2009 - 17:07 #16
mclemens > Det ser lidt ud som du har styr på det med decimaler osv... kunne du ikke hjælpe mig med noget lign. i http://www.eksperten.dk/spm/874040

1.000 tak.. :)
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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