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>
<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
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).
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.