getallen formaat javascript
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
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;
}
{
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.
Toevoeging op 13/11/2012 21:27:24:
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
Gewijzigd op 13/11/2012 21:27:51 door Andy V
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<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>
<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>
http://www.mredkj.com/javascript/NumberFormat154.js
en dan dit stukje in de code toegevoegd:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
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();
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.