Avatar billede nemlig Professor
15. oktober 2009 - 15:37 Der er 4 kommentarer og
1 løsning

Dansk talformatering når input-felt forlades

Hejsa
Jeg har en del inputfelter, hvor jeg godt kunne tænke mig, at det indtastede tal formateres til dansk formatering med 2 decimaler og tusindtalsseperator, når jeg forlader feltet.
Hvis der fx. er indtastet 4000, skal det ændres til 4.000,00, når feltet forlades.
Er der en løsning på dette.

Lige nu ser mit input felt således ud:

<input type='text' name='depositum' size=20 onfocus=\"this.style.backgroundColor='#$row[form_bg_aktiv]';\"  onblur=\"this.style.backgroundColor='#$row[form_bg]';\">
Avatar billede mbm2016 Nybegynder
15. oktober 2009 - 16:14 #1
Kan du bruge dette eksempel til noget:

<html>
    <head>
        <title>Tusindstalseperator + to decimaler - Eksperten</title>
        <script>
        function Format(obj)
        {
           
            var res="";
            /* Tusindtals seperatorpunktum bliver indsat: */
            if(obj.value.length >= 4)
            {
                var tPos = obj.value.length-3;
                for(var i = 0;i<obj.value.length;i++)
                {
                    if(i == tPos)
                    {
                        res += ".";
                        res += obj.value.charAt(i);
                    }
                    else
                    {
                        res += obj.value.charAt(i);
                    }
                }
            }else{res = obj.value;}
            /* ------------------------------------------ */
           
            /* 2 decimaler bliver indsat her */
            res += ",00";
            obj.value = res;
        }
        </script>
    </head>
   
    <body>
    <input type="text" onblur="Format(this)">
    </body>
</html>
Avatar billede ebusiness Nybegynder
15. oktober 2009 - 16:23 #2
Ja, det kan lade sig gøre, men jeg vil råde imod . som 1000-talsseperatorer i indtastningsfelter, det er noget værre hø når tallet skal parses, og forvirrer nok generelt mere end det gavner. Man kan bruge mellemrum som 1000-talsseperator, hvilket kan være gavnligt for at undgå fejl når man når op på 5+ cifre.

Det kan fx gøres således:
<script>
function formater(element){
    var tal=element.value
    var len
    tal=""+Math.floor(100*tal.replace(/\,/g,".").replace(/ /g,""))
    if(tal=="NaN"){
        tal="000"
    }
    while((len=tal.length)<3){
        tal="0"+tal
    }
    tal=tal.split("")
    tal[len-2]=","+tal[len-2]
    for(var a=len-5;a>0;a-=3){
        tal[a]=" "+tal[a]
    }
    element.value=tal.join("")
}
</script>
<input type="text" onblur="formater(this)">
Avatar billede nemlig Professor
15. oktober 2009 - 23:16 #3
Tak for bidragene, men den er ikke helt i skabet endnu.
Der er tale om et tal-felt, hvor der kan indtastes tal på forskellig vis:
5000 = 5.000,00
5000,25 = 5.000,25
5.000,25 = 5.000,25

Det med mellemrum, som tusindtalsseperator er jeg ikke vild med.
Avatar billede ebusiness Nybegynder
15. oktober 2009 - 23:36 #4
Du bestemmer selv, her er punktum versionen:

<script type="text/javascript">
function formater(element){
    var tal=element.value
    var len
    tal=""+Math.floor(100*tal.replace(/\./g,"").replace(/\,/g,"."))
    if(tal=="NaN"){
        tal="000"
    }
    while((len=tal.length)<3){
        tal="0"+tal
    }
    tal=tal.split("")
    tal[len-2]=","+tal[len-2]
    for(var a=len-5;a>0;a-=3){
        tal[a]="."+tal[a]
    }
    element.value=tal.join("")
}
</script>
<input type="text" onblur="formater(this)">
Avatar billede nemlig Professor
16. oktober 2009 - 23:05 #5
ebusiness: Sejt - præcis det jeg er ude efter. Tusind 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