it-swarm.com.de

Leerzeichen zwischen Zahlen einfügen?

Ich versuche eine Zahleneingabe zu machen. Ich habe so gemacht, dass mein Textfeld nur Zahlen über diesen Code akzeptiert:

function isNumber(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    return true;
}

Aber jetzt stellt sich die Frage, wie ich Leerzeichen erstellen würde, wenn der Benutzer seine Nummer eingibt, ähnlich wie beim iPhone, aber mit Zahlen, zum Beispiel, wenn er Folgendes eingibt: 1000 wird es 1 000;

1
10
100
1 000
10 000
100 000
1 000 000
10 000 000
100 000 000
1 000 000 000

Etc...

Ich habe versucht, die Eingabe von rechts für jeweils 3 Zeichen zu lesen und ein Leerzeichen hinzuzufügen. Aber mein Weg ist ineffizient und wenn ich den Wert in der Textbox von 1000 auf 1 000 ändere, wird er aus irgendeinem Grund ausgewählt und bei jedem weiteren Tastendruck wird das Ganze gelöscht.

Wenn Sie wissen, wie das geht, verzichten Sie bitte auf Javascript-Plugins wie jQuery. Danke.

31
user1768788

Für ganze Zahlen verwenden

function numberWithSpaces(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
}

Für Gleitkommazahlen können Sie verwenden

function numberWithSpaces(x) {
    var parts = x.toString().split(".");
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, " ");
    return parts.join(".");
}

Dies ist eine einfache Regex-Arbeit. https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions << Weitere Informationen zu Regex finden Sie hier.

Wenn Sie sich nicht sicher sind, ob es sich um eine Ganzzahl oder eine Gleitkommazahl handelt, verwenden Sie einfach die 2. ...

73
Isham Mohamed

Einfachster Weg:

1

var num = 1234567890,
result = num.toLocaleString() ;// result will equal to "1 234 567 890"

2

var num = 1234567.890,
result = num.toLocaleString() + num.toString().slice(num.toString().indexOf('.')) // will equal to 1 234 567.890

3

var num = 1234567.890123,
result = Number(num.toFixed(0)).toLocaleString() + '.' + Number(num.toString().slice(num.toString().indexOf('.')+1)).toLocaleString()
//will equal to 1 234 567.890 123

4

Wenn Sie "," anstelle von "" möchten:

var num = 1234567.890123,
result = Number(num.toFixed(0)).toLocaleString().split(/\s/).join(',') + '.' + Number(num.toString().slice(num.toString().indexOf('.')+1)).toLocaleString()
//will equal to 1,234,567.890 123

Wenn dies nicht funktioniert, stellen Sie den Parameter wie folgt ein: "toLocaleString ('ru-RU')" Parameter "en-EN", teilt die Zahl durch ',' anstelle von ''