Avatar billede sonic666 Novice
02. december 2003 - 21:32 Der er 5 kommentarer og
1 løsning

decimaler på pris i java-script formuler ?

Jeg har en formular der udfyler nogle prisfelter udfra valg foretaget i nogle lister.
Priser kan godt indeholde decimaler, men når de bliver vist i tekstfelterne er der kun en eller slet ingen decimal.

Hvordan kan jeg beholde 2 decimaler i de viste priser og i totalen til sidst??
Avatar billede sonic666 Novice
02. december 2003 - 21:42 #1
Her er koden til min formular (med indhold):


<!-- saved from url=(0022)http://internet.e-mail -->
<html>

<head>
  <title>Varebestilling</title>
  <link rel="stylesheet"
  href="stylesheed2.css" 
  type="text/css">
  <title>Automatisk udfyld tekstfelter i formular</title>
  <script language="JavaScript" type="text/javascript">
  function kommaTal(tal1,tal2){
    tal1=parseFloat(tal1.replace(/\,/gi,"."));
    tal2=parseFloat(tal2.replace(/\,/gi,"."));
    tal1=(isNaN(tal1))?0:tal1;
    tal2=(isNaN(tal2))?0:tal2;
    tal=String(tal1+tal2);
    tal=((tal.indexOf(".")==-1)?tal+",00":tal);
    tal=((tal.indexOf(".")==tal.length-2)?tal+"0":tal);
    tal=tal.replace(/\./gi,",");
    return (tal);
    }

  function writeNumbers(sel,frm,nm){
    a = frm.elements['antal'+nm];
    if(isNaN(a.value)||a.value==""){a.value = 1;}
    frm.elements['hvad'+nm].value=sel.text;   
    frm.elements['pris'+nm].value=parseFloat(sel.value.replace(/\,/gi,"."))*(+frm.elements['antal'+nm].value);   
    var sum = "0,00";
    for(i=0;frm.elements.length>i;i++){
        if(frm.elements[i].name.indexOf('pris')==0)sum = kommaTal(sum,frm.elements[i].value);
    frm.sum.value=sum;}
    return;
    }

  </script>
</head>

<body bgcolor="white" background="grafik/back__right.jpg">
  <fieldset>
  <legend>Bestil varer</legend>
    <form name="form1" method="post" action="">
    <table height="100%" border="0">
    <tr><td class="td_form">Perclor:</td></tr>
    <tr>
      <td>
      <select name="liste1" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));">
        <option value="" selected>--------------- ingen varer ---------------</option>
        <option value="407,50">0453 Perchlor....32,6 kg</option>
        <option value="387,13">0453 Perchlor 5-9 stk....32,6 kg</option>
        <option value="366,75">0453 Perchlor 10 stk....32,6 kg</option>
        <option value="3.635,40">0454 Perchlor....332 kg</option>
        <option value="128,80">0455 Perchlor DX....8,1 kg</option>
        <option value="4.349,20">0456 Perchlor DX....332 kg</option>
      </select><br>
      </td>
      <td class="td_form" width="60" align="right">Antal:</td>
      <td width="20"><input type="text" name="antal1" size="1" onchange="writeNumbers(this.form.elements['liste'+this.name.substring(5)].options[this.form.elements['liste'+this.name.substring(5)].selectedIndex],this.form,this.name.substring(5));"></td>
            <input type="hidden" name="hvad1">
      <td class="td_form" align="right" width="60">Pris:</td>
      <td width="40"><input type="text" name="pris1" size="8" READONLY></td>
    </tr>
    <tr height="20" valign="bottom"><td class="td_form">Renseforstærker:</td></tr>
    <tr>
      <td>
      <select name="liste2" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));">
        <option value="" selected>--------------- ingen varer ---------------</option>
        <option value="922,50">0510 Frankotex AST....25 l</option>
        <option value="1.280,00">0511 Novaclin Super P....25 l</option>
        <option value="558,00">0512 Taifun CDN....30 l</option>
        <option value="5.350,00">0514 Taifun CDN....200 l</option>
        <option value="997,00">0515 Preclin Odosorb....25 l</option>
        <option value="997,00">0516 Preclin P....25 l</option>
        <option value="1.548,75">0535 Novaclin Fresh....25 l</option>
        <option value="1.181,25">0510 Frankotex HCR....25 l</option>
        <option value="1.181,25">0510 Frankotex KW....25 l</option>
      </select><br>
      </td>
      <td class="td_form" width="60" align="right">Antal:</td>
      <td width="20"><input type="text" name="antal2" size="1" onchange="writeNumbers(this.form.elements['liste'+this.name.substring(5)].options[this.form.elements['liste'+this.name.substring(5)].selectedIndex],this.form,this.name.substring(5));"></td>
            <input type="hidden" name="hvad2">
      <td class="td_form" align="right" width="60">Pris:</td>
      <td width="40"><input type="text" name="pris2" size="8" READONLY></td>
    </tr>
    <tr height="20" valign="bottom"><td class="td_form">Forbehandling:</td></tr>
    <tr>
      <td>
      <select name="liste3" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));">
        <option value="" selected>--------------- ingen varer ---------------</option>
        <option value="958,00">0502 Polysol Odosorb....25 l</option>
        <option value="718,75">0530 Polysol SL....25 l</option>
        <option value="818,75">0531 Polysol RAN....25 l</option>
        <option value="821,50">0583 Polysol KWV....25 l</option>
      </select><br>
      </td>
      <td class="td_form" width="60" align="right">Antal:</td>
      <td width="20"><input type="text" name="antal3" size="1" onchange="writeNumbers(this.form.elements['liste'+this.name.substring(5)].options[this.form.elements['liste'+this.name.substring(5)].selectedIndex],this.form,this.name.substring(5));"></td>
            <input type="hidden" name="hvad3">
      <td class="td_form" align="right" width="60">Pris:</td>
      <td width="40"><input type="text" name="pris3" size="8" READONLY></td>
    </tr>
    <tr height="20" valign="bottom"><td class="td_form">Pletmidler</td></tr>
    <tr>
      <td>
      <select name="liste4" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));">
        <option value="" selected>--------------- ingen varer ---------------</option>
        <option value="198,00">0561 V1-3 Detachersortiment</option>
        <option value="387,00">0563 V1 Extra....5 l</option>
        <option value="387,00">0564 V2 Extra....5 l</option>
        <option value="387,00">0565 V3 Extra....5 l</option>
        <option value="87,50">0571 Blutol....1 l</option>
        <option value="367,50">0570 Blutol....5 l</option>
        <option value="87,50">0572 Colorsol....1 l</option>
        <option value="350,00">0573 Colorsol....5 l</option>
        <option value="84,00">0574 Frankosol....1 l</option>
        <option value="370,00">0575 Frankosol....5 l</option>
        <option value="87,50">0577 Lacol S....1 l</option>
        <option value="350,00">Lacol S....5 l</option>
        <option value="89,00">0587 Cavesol....1 l</option>
        <option value="382,00">0588 Cavesol....5 l</option>
        <option value="125,00">0589 Lipasol Flüssig....1 l</option>
        <option value="98,00">0529 Quickol....1 l</option>
        <option value="385,00">0528 Quickol....5 l</option>
        <option value="65,00">0532 Purasol N....1 l</option>
        <option value="124,00">0534 Burlanol....1 l</option>
        <option value="451,00">0533 Burlanol....5 l</option>
        <option value="155,00">0586 Solvex 1-3 sortiment</option>
        <option value="397,00">0545 Solvex 1....5 l</option>
        <option value="397,00">0546 Solvex 2....5 l</option>
        <option value="397,00">0547 Solvex 3....5 l</option>
        <option value="155,00">0506 Hydret 1-3 sortiment....1 l</option>
        <option value="92,00">0507 Hydret 1....1 l</option>
        <option value="92,00">0508 Hydret 2....1 l</option>
        <option value="92,00">0509 Hydret 3....1 l</option>
        <option value="397,00">0513 Hydret 2....5 l</option>
      </select><br>
      </td>
      <td class="td_form" width="60" align="right">Antal:</td>
      <td width="20"><input type="text" name="antal4" size="1" onchange="writeNumbers(this.form.elements['liste'+this.name.substring(5)].options[this.form.elements['liste'+this.name.substring(5)].selectedIndex],this.form,this.name.substring(5));"></td>
            <input type="hidden" name="hvad4">
      <td class="td_form" align="right" width="60">Pris:</td>
      <td width="40"><input type="text" name="pris4"  size="8"READONLY></td>
    </tr>
    <tr height="20" valign="bottom"><td class="td_form">Perclor:</td></tr>
    <tr>
      <td>
      <select name="liste5" onChange="writeNumbers(this.options[this.selectedIndex],this.form,this.name.substring(5));">
        <option value="" selected>--------------- ingen varer ---------------</option>
        <option value="50,25">rensev&aelig;ske</option>
        <option value="218">anden v&aelig;ske</option>
      </select><br>
      </td>
      <td class="td_form" width="60" align="right">Antal:</td>
      <td width="20"><input type="text" name="antal5" size="1" onchange="writeNumbers(this.form.elements['liste'+this.name.substring(5)].options[this.form.elements['liste'+this.name.substring(5)].selectedIndex],this.form,this.name.substring(5));"></td>
            <input type="hidden" name="hvad5">
      <td class="td_form" align="right" width="60">Pris:</td>
      <td width="40"><input type="text" name="pris5" size="8" READONLY></td>
    </tr>
    <tr>
      <td>
      Sum:<input type="text" name="sum" READONLY>
      </td>
    </tr>
    </table>
  </fieldset>
  </form>
</body>
</html>
Avatar billede sonic666 Novice
11. december 2003 - 15:33 #2
hvis der er to dicimaler i en pris bliver de begge vist feks 2,55
hvis der er en dicimal i en pris bliver kunden ene vist feks 2,50 bliver til 2,5 
2,00 bliver til 2  :-(
Det er ikke så godt når det er priser der er tale om.
Hvordan kan jeg få den til at beholde to decimaler lige meget hvad?

Håber nogen kan hjælpe
Avatar billede roenving Novice
11. december 2003 - 18:26 #3
<script language="JavaScript" type="text/javascript">
  function kommaTal(tal1,tal2){
    tal1=parseFloat(tal1.replace(/\,/gi,"."));
    tal2=parseFloat(tal2.replace(/\,/gi,"."));
    tal1=(isNaN(tal1))?0:tal1;
    tal2=(isNaN(tal2))?0:tal2;
    tal=String(tal1+tal2);
    tal=((tal.indexOf(".")==-1)?tal+",00":tal);
    tal=((tal.indexOf(".")==tal.length-2)?tal+"0":tal);
    tal=tal.replace(/\./gi,",");
    return (tal);
    }

  function writeNumbers(sel,frm,nm){
    a = frm.elements['antal'+nm];
    if(isNaN(a.value)||a.value==""){a.value = 1;}
    frm.elements['hvad'+nm].value=sel.text;   
    frm.elements['pris'+nm].value=kommaTal("0",""+parseFloat(sel.value.replace(/\,/gi,"."))*(+frm.elements['antal'+nm].value));
    var sum = "0,00";
    for(i=0;frm.elements.length>i;i++){
        if(frm.elements[i].name.indexOf('pris')==0)sum = kommaTal(sum,frm.elements[i].value);
    frm.sum.value=sum;}
    return;
    }

  </script>
Avatar billede sonic666 Novice
26. januar 2004 - 23:30 #4
Tak skal du have. Undskyld forsinkelsen
Avatar billede roenving Novice
28. januar 2004 - 17:18 #5
Velbekomme '-)
Avatar billede roenving Novice
11. juli 2005 - 14:24 #6
Tak for point ;~}
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