Hoi, ik zit een beetje vast, ik wil graag dat de getallen die door javascript weergeven worden juist met komma op het scherm getoond worden zoals dit: "1 000,00" nu is het dit: "1000,00" ik heb daarvoor een functie van het internet geplukt en dat is deze:


function formatNumber(number)
{
    number = number.toFixed(2) + '';
    x = number.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? ',' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ' ' + '$2');
        console.log(x1);   
    }
    return x1 + x2;
}


Een komma geeft hij al, maar de duizendtallen worden niet opgesplitst met een spatie, hij komt ook niet door de while dat heb ik zoals je ziet al getest met console.log();

Hopelijk kan iemand me hier even mee helpen.

[size=xsmall]Toevoeging op 13/11/2012 21:27:24:[/size]

het werkt wel maar alleen als er een 3 in voor komt dus bijvoorbeeld:

ik geef in : 10222222.00 dit word: 10222222,00
als ik dit ingeef: 10333333.00 word het: 10 33 33 33.00

dat heb ik dus niet nodig ik wil dat het zo gaat met eender welk getal: 10 000 000,00
De functie werkt goed, volgens mij.

Toon eens hoe je die functie gebruikt; en in welke context ...

Merk dus op: de functie verwacht als input een (floating point) nummer en geeft een string terug.
Ik veronderstel dat je ergens in je code met misse dataType bezig bent.
Javascript gaat iets minder soepel om met dataTypes dan php.

Voorbeeld dat ik getest heb en waar ik geen probleem zie:

<input onchange="document.getElementById('message').innerHTML = formatNumber(Number(this.value))">
<div id="message"></div>
<script>
function formatNumber(number)
{
    number = number.toFixed(2) + '';
    x = number.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? ',' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ' ' + '$2');
        console.log(x1);   
    }
    return x1 + x2;
}
</script>

heb het al opgelost met een plugin:

http://www.mredkj.com/javascript/NumberFormat154.js

en dan dit stukje in de code toegevoegd:

   var obj = total;
    var num = new NumberFormat();
    num.setInputDecimal(',');
    num.setNumber(obj); // obj.value is '300000,56'
    num.setPlaces('3', true);
    num.setCurrencyValue(' €');
    num.setCurrency(false);
    num.setCurrencyPosition(num.RIGHT_OUTSIDE);
    num.setNegativeFormat(num.RIGHT_DASH);
    num.setNegativeRed(false);
    num.setSeparators(true, ' ', ',');
    total = num.toFormatted();

en nu werkt het mooi, het was geen probleem met dataType, alles werkt zoals het hoort.

Reageren