• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Counter für Zeichen im Formularfeld

Martin

New member
hallo,
ich habe ein Eingabefeld auf meiner HP, bei dem ich die Zeichen zählen lassen möchte, d.h. wenn der Benutzer die Eingabe macht, sollen daneben die verbrauchten Zeichen erscheinen.
Beispiel: http://www.subwizard.de/ (Free Version, unter Keywords befindet sich ein kleines Fenster, wo die Zeichen gezehlt werden)
Gibt es dafür ein Java/CGI Script?

Danke im Voraus

Martin
 
hi Martin,

für Textarea:

<html>
<head>

<script language="JavaScript" type="text/javascript">
<!--
function Eingabe1(InputStr) {
StrLen = InputStr.value.length
if (StrLen == 1 && InputStr.value.substring(0,1) == " ") {
InputStr.value = ""
StrLen = 0
} else {
CharsLeft = 100 - StrLen
}
document.Eingabe.counter.value = CharsLeft
if (CharsLeft <= 0) {alert ('Sie haben alle 100 Zeichen eingegeben.')}
}

function OnKeyDownInTextArea( item, maxlen ) {
if (item.value.length > maxlen - 1) {
event.returnValue = false;
}
}
//-->
</script>

</head>
<body>

<form name="Eingabe">

<textarea name="Text" rows="4" cols="55" maxlength="100" onkeypress="Eingabe1(this)" onkeyup="Eingabe1(this)" onkeydown="OnKeyDownInTextArea(this,100)" style="overflow:hidden" wrap="virtual"></textarea>
<br>Es stehen noch <input name="counter" type="TEXT" size="3" maxlength="3" value="100" readonly> Zeichen für dienen Eintag zur Verfügung.
</form>

</body>
</html>

für input ( Author Klaus ;) ):

<html>
<head>

<script language="JavaScript" type="text/javascript">
<!--
function Eingabe1() {
document.text.zeichen1u.value = 100 - document.text.zeichen1.value.length;
var leerzeichen = "";
for (i=0; i<=100-(document.text.zeichen1.value.length); i++) {
leerzeichen = leerzeichen + " ";
}
}
// -->
</script>

</head>
<body>

<form name="text">
<input name="zeichen1" type="text" size="60" maxlength="100" onchange="Eingabe1()" onkeydown="Eingabe1()" onkeypress="Eingabe1()" onkeyup="Eingabe1()">
<br>Es stehen noch <input type="text" size="3" name="zeichen1u" value="100"> Zeichen für dienen Eintag zur Verfügung.
</form>

</body>
</html>


gruss
René
 
Hallo,
ich grab hier mal diesen Ural-Beitrag aus, weil der einfach perfekt auf meine Situation passt.
Also ich hab anhand des Skriptes mit einigen kleinen Anpassungen das ganze hinbekommen, nur bräuchte ich jetzt noch so einen Counter, welcher nicht die Zeichenanzahl, sondern die Wortanzahl ausliest, und diese müsste ich dann auch begränzen, sodass in ein input-field max. 15 Wörter (unabhängig von deren Zeichenanzahl) eingegeben werden können.

Kann mir da bitte jemand helfen? Bin in JavaScript leider ein totaler NOOB!!!

Danke für jedwege Hilfe

Gruß
Noob82
 
Hier eine grobe Funktion wie du die Anzahl der Wörter ermitteln kannst:

Code:
function countWords(text) {
    return text.replace(/\S/g, "").length + 1;
}
 
Funktioniert leider nur wenn die Wörter durch genau 1 Leerzeichen getrennt sind (vom Ansatz aber erst mal nicht schlecht).
 
ungetesteter Schnellschuß:
Code:
var s="ein  text  mit mehreren wörtern ";
var wortanzahl = s.match(/\S+/g).length;
 
Zuletzt bearbeitet:
Code:
String.prototype.countWords = function() {
	var tmp = this.replace(/\s+/g, ' ');
	return tmp.split(' ').length - 1;
};

var s = "ein  text  mit mehreren wörtern\nund über mehrere Zeilen. ";
alert(s + '\nWörter: ' + s.countWords())
 
#6 funktioniert auch mit "ein text mit mehreren wörtern\nund über mehrere Zeilen. ", jetz kann er sich was aussuchen...:)
 
Es ging vorhin nicht, aber das lag wohl an dem blöden Verhalten des [ php ] Tags hier im Forum. Dann ist meine Variante wohl umständlicher.
 
Wieviele Wörter sollten hier erkannt werden? "hallo-ich-bin-nur-ein-wort.Ehrlich!Wirklich,nur;eins."
Ich würde
Code:
string.split(/[/s.,:;!?-_]+/).length;
mit denentsprechenden Zeichen verwenden.
 
Zurück
Oben