# Input Feld mit direktem trennzeichen



## bensky (6. Juni 2006)

Hallo Leute. Ich suche schon seit ner Stunde bei google nach nem Javascript welches eine in ein Input feld eigegebene Zahl direkt mit trennzeichen darstellt. Bsp. ich gebe "1000" und im input feld soll automaitisch 1.000,00 stehen. Geht das nicht oder warum finde ich nichts passendes? Vielleicht hat ja einer von euch eine Idee. Dank im Voraus.


----------



## flooo (7. Juni 2006)

```
<script type="text/javascript" language="javascript">
	function change( feld )
	{
		var ohnepunkte;
		var getrennt;
		var dezimal;
		var anzahl;
		var start;
		var fertig="";
		var i;
		//alte Punkte entfernen
		ohnepunkte = feld.replace(/\./, "");
		//dezimalstellen vom Ganzzahl trennen
		getrennt = ohnepunkte.split(",");
		//wieviele 3er Abschnitte
		anzahl = Math.floor(getrennt[0].length/3);
		//wieviele Zeichen noch davor
		start = getrennt[0].length-anzahl*3;
		//Zeichen davor ins Zielzeichenkette schreiben
		fertig = getrennt[0].substr(0, start);
		//jeden 3er-Block mit Punkt an Zielzeichenkette anhängen
		for(i=1; i<=anzahl; i++)
		{
			//Wenn 3er-Blöcke genau aufgehen, keinen Punkt an Anfang
			if(!(i==1 && start==0))
				fertig += '.';
			//Anfangswert für den jeweiligen 3er-Block
			anfang = start+(i-1)*3; 
			//jeweiligen 3er-Bock an Zeilzeichenkette anhängen
			fertig += getrennt[0].substr(anfang, 3);
		}
		//Dezimalabschnitt an Zielzeichenkette anhängen
		if(getrennt.length>1)
		{
			fertig += ','+getrennt[1];
		} else {
			fertig += ',00';
		}
		//Zielzeichenkette zuweisen
		document.getElementById('textfeld').value = fertig;
	}	
</script>
<input type="text" id="textfeld" onchange="change( this.value )" />
```
büddö
flooo


----------



## Quaese (7. Juni 2006)

Hi,

oder mit Hilfe von regulären Ausdrücken formatieren - Sven Mintel hat hier mal den Ausgangsalgorithmus vorgestellt.

```
function change(strZahl){
  // Mögliche Dezimalstellen auf 2 Stellen runden und Dez-Punkt durch Komma ersetzen
  strZahl = String(Number(strZahl).toFixed(2)).replace(/\./,",");

  // Solange noch mindestens vier Ziffern am Anfang gefunden werden
  while(strZahl.match(/^(\d+)(\d{3}\b)/)){
    // Tausendertrennzeichen einfügen
    strZahl = strZahl.replace(/^(\d+)(\d{3}\b)/, RegExp.$1 + "." + RegExp.$2);
  }

  //Zielzeichenkette zuweisen
  document.getElementById('textfeld').value = strZahl;
}
```
Ciao
Quaese


----------



## Sven Mintel (8. Juni 2006)

Was du so alles findest...ich hätt mich glatt hingesetzt und es neu geschrieben


----------



## Quaese (8. Juni 2006)

Hi Sven,

die paar Zeilen haben mich schon beim ersten Posting so beeindruckt, dass ich sie einen Ehrenplatz 
bei mir erhalten haben. Also wenn Du sie nochmal benötigen solltest - musst sie nicht neu schreiben, 
ich lasse sie Dir zukommen ;-)

Ciao
Quaese


----------

