Avatar billede plippert Nybegynder
15. august 2012 - 15:20 Der er 13 kommentarer og
1 løsning

1.000 seperator

Jeg har en lille fin html-app til ipad, hvor jeg mangler at få 1.000 seperator til at virke så der står 1.000 i stedet 1000. Jeg har forsøgt mig med et væld af muligheder som jeg er kommet frem til ved at google, men ingen af dem har jeg kunne finde ud af at implementere.

Jeg ved ikke helt hvor meget kode der behøves for at det giver mening, men herunder er funktionen der viser de respektive tal i mine div-kasser.

amount og totalprice ville jeg rigtig gerne have en 1.000 seperator på...




           
            // define the finish callback, this runs after the calculation has been complete
            function ($this){
                // sum the total of the $("[id^=total_item]") selector
                var sum = $this.sum();               
                var amount = $("input[name^=qty_item_1]").val(); // OK
                var showppunit = $("input[name=ppunit]").val();
                $("#amount").val(amount);
                $("#showppunit").val(showppunit);
                $("#totalprice").val(sum);           
                $("#grandTotal").text(
                    // round the results to 2 digits
                    "Kr. " + sum.toFixed(0)
                );
            }
Avatar billede olebole Juniormester
15. august 2012 - 16:22 #1
<ole>

var num = 234569000894;
alert(num.toLocaleString());

/mvh
</bole>
Avatar billede mbm2016 Nybegynder
20. august 2012 - 04:00 #2
Hejsa #plippert,

Jeg har lige siddet og fundet på en funktion som kan lave punktum seperatorer på tal, hvor man selv kan bestemme hvor den skal dele tallet:

function numSep(numStr,digits)
    {   
        (typeof(numStr!="string")?numStr=numStr+"":0);
        var i = numStr.length;
        while((i-digits)>=0?i-=digits:0)               
            numStr = [numStr.slice(0, i), ".", numStr.slice(i)].join('');
        return numStr;
    }


Hvis du gerne vil have den til at lave tusind seperatorer, bruger du den sådan her:
numSep("3250",3) -> 3.250

du kan også dele ved 2;
numSep("3250",2) -> 32.50


Hvis du sætter min funktion ind før din egen kode kan din implementation komme til at se nogenlunde således ud:

function numSep(numStr,digits)
    {   
        (typeof(numStr!="string")?numStr=numStr+"":0);
        var i = numStr.length;
        while((i-digits)>=0?i-=digits:0)               
            numStr = [numStr.slice(0, i), ".", numStr.slice(i)].join('');
        return numStr;
    }

// define the finish callback, this runs after the calculation has been complete
            function ($this){
                // sum the total of the $("[id^=total_item]") selector
                var sum = numSep($this.sum(),3);               
                var amount = numSep($("input[name^=qty_item_1]").val(),3); // OK
                var showppunit = $("input[name=ppunit]").val();
                $("#amount").val(amount);
                $("#showppunit").val(showppunit);
                $("#totalprice").val(sum);           
                $("#grandTotal").text(
                    // round the results to 2 digits
                    "Kr. " + sum.toFixed(0)
                );
            }
Avatar billede mbm2016 Nybegynder
20. august 2012 - 04:00 #3
Hejsa #plippert,

Jeg har lige siddet og fundet på en funktion som kan lave punktum seperatorer på tal, hvor man selv kan bestemme hvor den skal dele tallet:

function numSep(numStr,digits)
    {   
        (typeof(numStr!="string")?numStr=numStr+"":0);
        var i = numStr.length;
        while((i-digits)>=0?i-=digits:0)               
            numStr = [numStr.slice(0, i), ".", numStr.slice(i)].join('');
        return numStr;
    }


Hvis du gerne vil have den til at lave tusind seperatorer, bruger du den sådan her:
numSep("3250",3) -> 3.250

du kan også dele ved 2;
numSep("3250",2) -> 32.50


Hvis du sætter min funktion ind før din egen kode kan din implementation komme til at se nogenlunde således ud:

function numSep(numStr,digits)
    {   
        (typeof(numStr!="string")?numStr=numStr+"":0);
        var i = numStr.length;
        while((i-digits)>=0?i-=digits:0)               
            numStr = [numStr.slice(0, i), ".", numStr.slice(i)].join('');
        return numStr;
    }

// define the finish callback, this runs after the calculation has been complete
            function ($this){
                // sum the total of the $("[id^=total_item]") selector
                var sum = numSep($this.sum(),3);               
                var amount = numSep($("input[name^=qty_item_1]").val(),3); // OK
                var showppunit = $("input[name=ppunit]").val();
                $("#amount").val(amount);
                $("#showppunit").val(showppunit);
                $("#totalprice").val(sum);           
                $("#grandTotal").text(
                    // round the results to 2 digits
                    "Kr. " + sum.toFixed(0)
                );
            }
Avatar billede mbm2016 Nybegynder
20. august 2012 - 04:04 #4
Der fail'ede ekspertens post system vidst lige igen og postede det 2 gange!!! Sikke noget spam!

Det skal lige siges at denne linje som står i funktionen:

(typeof(numStr!="string")?numStr=numStr+"":0);

Gør at du både kan bruge funktionen med tal:
numSep(3250,3) -> 3.250

og med en streng:
numSep("3250",3) -> 3.250
Avatar billede plippert Nybegynder
20. august 2012 - 13:54 #5
Hejsa
Det var ellers fornemt! Jeg kan imidlertid ikke få det til at virke :(

Der kommer ikke noget punktum.



Har kun tilføjet et , efter din funktion




function numSep(numStr,digits)
    { 
        (typeof(numStr!="string")?numStr=numStr+"":0);
        var i = numStr.length;
        while((i-digits)>=0?i-=digits:0)             
            numStr = [numStr.slice(0, i), ".", numStr.slice(i)].join('');
        return numStr;
    },

// define the finish callback, this runs after the calculation has been complete
            function ($this){
                // sum the total of the $("[id^=total_item]") selector
                var sum = numSep($this.sum(),3);             
                var amount = numSep($("input[name^=qty_item_1]").val(),3); // OK
                var showppunit = $("input[name=ppunit]").val();
                $("#amount").val(amount);
                $("#showppunit").val(showppunit);
                $("#totalprice").val(sum);         
                $("#grandTotal").text(
                    // round the results to 2 digits
                    "Kr. " + sum.toFixed(0)
                );
            }
Avatar billede olebole Juniormester
20. august 2012 - 14:27 #6
<ole>

En lidt lettere/simplere løsning:

function str2num(s) {
    return 1*(""+s.replace(".", "").replace(",", "."));
}
function num2str(n) {
    return n.toLocaleString();
}
alert(str2num("25567,45"));
alert(num2str(25567.45));

Et tal, indtastet af brugeren, kører du igennem str2num, inden du bruger tallet til beregninger.

Når du skal skrive tallet ud i dokumentet, kører du det igennem num2str

/mvh
</bole>
Avatar billede plippert Nybegynder
20. august 2012 - 14:46 #7
Hejsa olebole
Jeg ved godt, at det er simple kode, men jeg forstår mig ikke på, at sætte det ind de rigtige steder i min egen kode :(
Avatar billede olebole Juniormester
20. august 2012 - 15:01 #8
Hvis du ikke ved, hvad du laver, burde du nok sætte dig ind i virkemåden af de ting, du laver. En god idé ville være at vente med at bruge jQuery, til du har lært noget JavaScript.

jQuery gør ikke, at man ikke behøver at være så stærk i JS ... tværtimod. Når du bruger jQuery, kræver det bedre indsigt i JS  =)
Avatar billede plippert Nybegynder
20. august 2012 - 15:36 #9
det er derfor jeg skriver her. Kunne jeg finde ud af det, ville jeg lave det selv.
Hvis ikke du har lyst til at hjælpe, så lader du bare være.
Avatar billede olebole Juniormester
20. august 2012 - 16:12 #10
Så har du helt misforstået meningen med Eksperten. Hvis man bare skal heve en færdig kode, opretter man et spørgsmål under kategorien 'Opgaver'.

Kategorien her er beregnet til 'Hjælp til selvhjælp'. Hvis du skal lære noget, må du forklare, hvad det er, du ikke kan finde ud af. Hvad er det ved den kode, du har skrevet, du ikke forstår, siden du ikke ved, hvor det skal sættes ind?
Avatar billede mbm2016 Nybegynder
27. august 2012 - 17:35 #11
Hejsa Plippert :)

Kan se du ikke har særligt godt styr på Javascript, og måske kodning i det hele taget ! :-)

Dejligt at så tør spørger om hjælp herinde, men jeg tror vidst du bliver nødt til at give os hele koden til fra hele den side hvor du skal bruge funktionaliteten? :)
Avatar billede plippert Nybegynder
30. august 2012 - 09:10 #12
Hejsa
beklager, at der gik så lang tid før jeg kunne vende tilbage. hermed min kode





<!DOCTYPE html>
<html>
    <head>
   
    <meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <link rel="apple-touch-icon" sizes="72x72" href="home-screen-icon.png" />
        <title>
        E4D - Hvornår kan det betale sig
        </title>
 
       
       
        <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
      <style>
            /* App custom styles */
            input.contact {
                margin-left:-25px;
                height:30px;
            }
            #submit {
                color: #fff;
                font-size: 0;
                width: 135px;
                height: 60px;
                border: none;
                margin: 0;
                padding: 0;
                }

        #amount {
                    margin-left: 285px;
                    margin-top:-29px;
                    width:60px;
           
            }
        #totalprice {
                    margin-left: 330px;
                    margin-top:-29px;
                    width:60px;
                }
        #showppunit {
                    margin-left: 100px;
                    margin-top:-29px;
                    width:60px;
                }
       
        </style>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>       
        <script src="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>       
        <script src="my.js">
        </script>

    <!--// load jQuery Plug-ins //-->
    <script type="text/javascript" src="jquery.calculation.js"></script>

    <script type="text/javascript">
    $(document).ready(
        function (){
            // update the plug-in version
            $("#idPluginVersion").text($.Calculation.version);
            // bind the recalc function to the quantity fields
//            $("input[name^=qty_item_]").slider("refresh");
            $("input[name=ppunit]").bind("change", recalc);//PLI tilføjer
            $("input[name^=qty_item_]").bind("change", recalc);
            // run the calculation function now
            recalc();
           
            //$("#qty_item_1").change(function(){
        //    var slider_value = $(this).val()
    //        console.log(slider_value)
  //            })

           
           

        }
    );
   
    function recalc(){
        $("[id^=total_item]").calc(
            // the equation to use for the calculation
            //"qty * price",
            "((qty * (ppunit - 300))-11840) - ((ppunit - 1900) * qty)", //nu med  salgspris indregnet i ikke-e4d-scenarie.
            //"((qty * (ppunit - 300))-11840)-(qty * 3100)",//PLI retter
            // define the variables used in the equation, these can be a jQuery object
            {
                ppunit: $("input[name=ppunit]"),//PLI tilføjer
                qty: $("input[name^=qty_item_1]"),
                price: $("[id^=price_item_]")
            },
            // define the formatting callback, the results of the calculation are passed to this function
           
            function (s){
                // return the number as a dollar amount
                return "Kr. " + s.toFixed(0);
                //return v.replace(/[^0-9.\-]/g, "");
            },
           


           
            // define the finish callback, this runs after the calculation has been complete
            function ($this){
//                // sum the total of the $("[id^=total_item]") selector
                var sum = $this.sum();               
                var amount = $("input[name^=qty_item_1]").val(); // OK
                var showppunit = $("input[name=ppunit]").val();
            $("#amount").val(amount);
            $("#showppunit").val(showppunit);
                $("#totalprice").val(sum);           
            $("#grandTotal").text(
                    // round the results to 2 digits
            );
            }
           
           
           
        );
    }
   
   
   
//


    </script>
    </head>
    <body>

   
        <!-- Home -->
        <div data-role="page" id="page1">
            <div data-theme="a" data-role="header">
                <h2>
E4D-Beregneren - hvornår kan det betale sig?
             
                </h2>
            </div>
                   
            <div data-role="content" style="padding: 15px">
                <div data-role="fieldcontain">
                <h1 style="text-align:center;">Hvor mange fuldkeramiske kroner laver<br/>klinikken om måneden?</h1>
                    <fieldset data-role="controlgroup">
                        <label for="qty_item_1">
                            </label>
                        <input name="qty_item_1" id="qty_item_1" value="7.4" min="0" max="100" data-highlight="true" type="range" />
                    </fieldset>
                  <!--<h1 style="text-align:center;">Hvad betaler patienterne per styk?</h1>
                    <fieldset data-role="controlgroup">
                        <label for="ppunit">
                            </label>
                        <input name="ppunit" id="ppunit" value="5000" min="3400" max="10000" step="100" data-highlight="true" type="range" />
                       
                    </fieldset>-->
                </div><br/>
              <h1 style="text-align:center;">Merindtjening om måneden med E4D:
                <div data-role="fieldcontain" id="total_item_1" style="margin-top:10px; text-align:center; vertical-align:middle; font-size:70px; margin-left:auto; margin-right: auto; display:block; width:500px; height:75px; border:0px solid #dedede;"></div></h1>
                <div style="display:block; width:400px;margin-left:auto; margin-right:auto; margin-top:-20px;"><a href="#page2" data-direction="reverse" data-role="button" data-theme="b" style="margin-left:auto; margin-right:auto;height:60px;width:400px; font-size:24px;">Vil du høre mere?</a>
               
               
                         
                              </div><br/><br/><br/><br/><br/>
            <p><a href="#popup" data-direction="reverse" data-role="button" data-inline="true" style="float:right;">Se forudsætninger</a></p>
   
               
            </div>
        </div><!-- /page1 -->
       
<!-- Start of second page: #page2 -->
<div data-role="page" id="page2">

    <div data-role="header">
        <h1>Ja, tak. Jeg vil gerne kontaktes vedrørende E4D</h1>
    </div><!-- /header -->

    <div data-role="content">   
        <h1 style="text-align:center;">Skal vi ikke ringe til dig?</h1>
       
        <!-- Formular start  -->
        <div data-role="content" style="padding: 10px; margin:0 auto; width:700px; border:0px solid black; text-align:center;">
       
                <form action="send.php" method="POST" data-ajax="false" >
                <div style="text-align:left; width:440px; margin:0 auto; border:0px solid black;"><p>Antal fuldkeramiske kroner hver måned <input class="locked" id="amount" name="amount"  readonly/> <br/>
              <!--  Pris per styk: <input id="showppunit" name="showppunit" class="locked" readonly/><br/> -->
                Potentiel merindtjening ved investering i E4D: <input class="locked" id="totalprice" name="totalprice"  readonly /> </p>

               
                </div>
               
<p><strong>Jo, tak. Det lyder interessant!</strong><br/> Kontakt mig snarest vedrørende E4D.</p>
                <div data-role="fieldcontain">
                    <fieldset data-role="controlgroup">
                     
                        <input class="contact" id="textinput1" placeholder="Navn"  name="firstname" type="text" />
                    </fieldset>
                </div>
                <div data-role="fieldcontain">
                    <fieldset data-role="controlgroup">
                     
                        <input class="contact" id="textinput4" placeholder="Klinik"  name="klinik" type="text" />
                    </fieldset>
                </div>
                <div data-role="fieldcontain">
                    <fieldset data-role="controlgroup">
                   
                        <input class="contact" id="textinput2" placeholder="E-mail"  name="e-mail" type="email" />
                    </fieldset>
                </div>
                <div data-role="fieldcontain">
                    <fieldset data-role="controlgroup">
                     
                        <input class="contact" id="textinput3" placeholder="Telefon"  name="telefon" type="number" />
                    </fieldset>
                </div>
              <div style="border:0px solid black; width:300px; margin:0 auto;">
              <input data-inline="true" value="Ja, tak. Jeg vil gerne kontaktes" data-mini="false" type="submit" class="contact_submit" /> </div>
            </form> </div>
         
</div>
            <!-- Formular slut -->
<br/><br/><br/><br/><br/>
        <p><a href="http://superfly.dk/ipad/m_var/index.html#page1" data-role="button" data-inline="true" data-icon="back" style="float:right;">Ny beregning</a></p>
       
    </div><!-- /content -->
   
   
</div><!-- /page two -->


<!-- Start of third page: #popup -->
<div data-role="page" id="popup">

    <div data-role="header">
       
        <h1>Forudsætninger</h1>
    </div><!-- /header -->
<div style="border:0px solid black; width:500px; margin:0 auto;">
    <div data-role="content">   
        <h2 style="text-align:center;">Forudsætninger</h2>
        <p>Vi har sat  nedenstående forudsætninger for den beregning der foretaget.<br>
Der tages  udgangspunkt i en fuldkeramisk krone. </p>
        <ul>
          <li>Månedlig leasingudgift til udstyret: kr.  12.500 inkl. moms.</li>
        </ul>
        <p>&nbsp;</p>
        <ul>
          <li>Anslået udgift til laboratorium pr. krone:  kr. 1.600 inkl. moms.</li>
        </ul>
        <ul>
          <li>Anslået kostpris for en E4D krone inkl.  slitage på bor: kr. 300 inkl. moms</li>
        </ul>
        <p>&nbsp;</p>
        <ul>
          <li>Anslået kostpris for et provisorium ekskl.  medgået tid: kr. 300 inkl. moms</li>
        </ul>
        <ul>
          <li>Salgspris til patient pr. krone: Variabel</li>
        </ul>
        <p>&nbsp;</p>
        <ul>
          <li>Forventet antal kroner om måneden: Variabel.</li>
        </ul>       
    </div>

          <div style="display:block; width:400px;margin-left:auto; margin-right:auto;">
          <a href="#page1"  data-role="button" data-theme="b" style="margin-left:auto; margin-right:auto;height:60px;width:400px; font-size:24px;">Tilbage til beregning</a>
               
               
                         
                              </div>
    </div><!-- /content -->
   
   
</div><!-- /page popup -->




        <script>
        </script>
    </body>
</html>
Avatar billede plippert Nybegynder
05. september 2012 - 13:41 #13
har fået det til at virke - lukker
Avatar billede plippert Nybegynder
05. september 2012 - 13:41 #14
lukket
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