---
title: "Formatera i tusendelar"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/181647-formatera-i-tusendelar"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "ironhead"
published: "2009-12-15T10:39:49.000Z"
updated: "2011-06-21T15:00:08.000Z"
replies: 11
views: 3374
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/181647-formatera-i-tusendelar"
---

# Formatera i tusendelar

## #1 — ironhead, 2009-12-15T10:39Z

Hej alla glada! Hoppas på lite hjälp...
Jag försöker formatera siffror med tusendelsformatering (heter det så?)

```
t.ex.: 
1000 -> 1 000
10000 -> 10 000
10000 -> 100 000
etc.
```

men när jag kommer över 1000000 (en miljon) i nedanstående skript blir det noll (0)...hur ska man skriva för att kunna skriva 
åtminstonde upp till 10 eller 100 miljoner. Snälla hjälp mig  :r

```
<html>
<head>
<script>
function number_format (number,id) {

    var box = document.getElementById(id);
    number = box.value.replace(' ','');	

    var n = number;
    n = !isFinite(+n) ? 0 : +n;

    var s = n.toString();
    var _, i;

    if (s >= 1000) {
        _ = s.split(/\D/);
        i = _[0].length % 3 || 3;
        
        _[0] = s.slice(0,i + (n < 0)) + _[0].slice(i).replace(/(\d{3})/g, ' '+'$1');
        s = _;
    	}
      box.value = s;
}
</script>
</head>
 <body>
  <form name="form1" id="form1">
  
   <input type="text" id="t1" onkeyup="javascript:number_format(this.value,this.id);">

  </form>
 </body>

</html>
```

Permalänk: https://www.webforum.nu/p/181647

## #2 — voigtann1, 2009-12-15T11:07Z

```
<html>
<head>
<script>
function number_format (elm) {
	var number = elm.value.replace(/\D+/ig, "");
	var n = number;
	var s = n.toString();
	var _, i;
	if (s.length >= 4) {
		_ = s.split(/\D/);
		i = _[0].length % 3 || 3;
		_[0] = s.slice(0,i + (n < 0)) + _[0].slice(i).replace(/(\d{3})/g, ' $1');
		s = _;
	}
	elm.value = s;
}
</script>
</head>
 <body>
  <form name="form1" id="form1">
  
   <input type="text" id="t1" onkeyup="javascript:number_format(this);">

  </form>
 </body>

</html>
```

Känns lite omständigt att du inte refera till this endast och använda den sosm referens, då behöver du inte hämta elementet en gång till, då du redan har en klockren referens med *this*

Permalänk: https://www.webforum.nu/p/2217460

## #3 — ironhead, 2009-12-15T12:11Z

Miljoners (eller ska jag säga tusendelars) tack!  :bire

Permalänk: https://www.webforum.nu/p/2217464

## #4 — ironhead, 2009-12-15T12:20Z

Kan man göra så att man tillåter mellanslag i textboxen också

Permalänk: https://www.webforum.nu/p/2217465

## #5 — voigtann1, 2009-12-15T13:24Z

Frågan är varför du skulle vilja tillåta mellanslag, den gör ju formateringen till dig.

Permalänk: https://www.webforum.nu/p/2217471

## #6 — ironhead, 2009-12-16T10:15Z

> **[voigtann1 skrev:](https://www.webforum.nu/p/1491565)**
>
> Frågan är varför du skulle vilja tillåta mellanslag, den gör ju formateringen till dig.

Vissa användare är van att skriva in siffran i det formatet direkt, och vissa är inte van...och då ska siffran formateras.

Permalänk: https://www.webforum.nu/p/2217534

## #7 — voigtann1, 2009-12-16T10:20Z

Det spelar ju ingen roll då ju, mellanslag kommer formateras om det är ett korrekt värde:
"1 000" =\> "1000" =\> "1 000"

Permalänk: https://www.webforum.nu/p/2217535

## #8 — silfver, 2011-06-21T14:14Z

Hur skulle den här koden se ut om man inte vill tillåta space? Alltså att man endast kan mata in siffror 0-9. :)

r\\ Jag läste nog lite för snabbt. Din funktion fungerar lysande som vanligt voigtann1!  (y) :bire

Permalänk: https://www.webforum.nu/p/2280250

## #9 — voigtann1, 2011-06-21T14:23Z

Kolla vad det är för key-event som triggas om det inte är 0-9 på tangentbordet retunera false (kanske skall tillåta fler tangenter än bara alla nummer).

Permalänk: https://www.webforum.nu/p/2280253

## #10 — silfver, 2011-06-21T14:45Z

> **[voigtann1 skrev:](https://www.webforum.nu/p/1536502)**
>
> Kolla vad det är för key-event som triggas om det inte är 0-9 på tangentbordet retunera false (kanske skall tillåta fler tangenter än bara alla nummer).

onkeyup, eller vad menar du? Skriver jag i bokstäver så raderas de.

De enda buggarna jag hittar är att tabbningen mellan inputfälten inte är helt optimal om fältet redan har ett värde ifyllt. Då tar den bort markeringen fort som attan. :) Man kan inte ctrl+a:a heller.

Likadant om fältet har ett defaultvärde så appliceras ju inte scriptet på dem som default.

Permalänk: https://www.webforum.nu/p/2280256

## #11 — voigtann1, 2011-06-21T14:50Z

Ja de försvinner men den ersätter hela formulär texten. Men det fungera

Permalänk: https://www.webforum.nu/p/2280257

## #12 — silfver, 2011-06-21T15:00Z

> **[voigtann1 skrev:](https://www.webforum.nu/p/1536506)**
>
> Ja de försvinner men den ersätter hela formulär texten. Men det fungera

 Fungerar utmärkt! Tack för hjälpen. ;)

Permalänk: https://www.webforum.nu/p/2280258

---

Tråden på webben: https://www.webforum.nu/amne/javascript/181647-formatera-i-tusendelar
