# JS bestimmte einzelne Zeichen zählen (Tab / Zeilenvorschub)



## hiltwin (6. Oktober 2010)

Bei meinen gesamten Suchgängen habe ich nur Codeschnipsel gefunden, bei denen beim  Textarea-Feld die verbleibenden Zeichen runtergezählt werden 

Was ich vorhabe:

Ich möchte in einem Textarea-Feld Daten aus der Zwischenablage aufnehmen, die dorthin zuvor aus einer Excel oder OOCalc Tabelle hingekommen sind.

Dabei werden unterschiedlich viele Spalten und Zeilen genutzt werden. Zum Ermitteln und Weiterverarbeiten suche ich dafür ein kleines JS, das folgendes ermittelt und ausführt:

- Zählen der gesamten Tabulatorzeichen der Eingabe
- Zählen der gesamten Zeilenvorschubzeichen der Eingabe
- Überprüfen, ob die Anzahl der Tabulatorzeichen der einzelnen Zeilen identisch sind
Bei nein
- Submit auf nicht anklickbar setzen
- (Alert nope)
ansonsten
- schreibe in ein <input type="hidden" name="tabulatoren"> die Anzahl der Tabs pro Zeile
- schreibe in ein <input type="hidden" name="zeilen"> die Anzahl der Zeilen
- Alert (Es sind x Tabs in y Zeilen enthalten)

Das JS soll gleich beim Eingeben/Verlassen des Textareafeldes die Überprüfung vornehmen.

Bin für jedweden verwendbaren Codeschnipsel dankbar!


----------



## CPoly (6. Oktober 2010)

Das Zählen der Tabs oder Newlines geht am Besten über eine Schleife. Zwar kann man auch einen regulären Ausdruck benutzen und über die String.match() Funktion die Anzahl der Treffer ermitteln, aber das einmalige Durchlaufen ist wohl wesentlich einfacher.


```
var str = 'Irgendein Text, der auch Tabs und mehrere Zeilen enthält! \n\n\n\tEingerückt\n\n\n Jetzt sind wir viel weiter unten.';
var numTabs = 0;
var numNewlines = 0;

for(var i=0;i<str.length;i++) {
	if(str[i] === '\t')
		numTabs++;
	else if(str[i] === '\n')
		numNewlines++;
}
	
alert(numTabs);
alert(numNewlines);
```

Das größere Problem ist es, zu erkennen, wann etwas eingefügt wurde. Es gibt kein Cross-Browser-Event dafür. Also nach Möglichkeit irgendwas aus onPaste, onInput, onKeyDown, onClick und vielleicht einem Timer basteln.


----------



## hiltwin (6. Oktober 2010)

Toll - vielen Dank. Genau so etwas habe ich zum Einstieg gesucht. Ich denke, darauf kann ich dann mit meinen Kenntnissen weiter aufbauen und vollenden. Ich schliesse dann mal hier ...


----------

