Limited TextArea und Absatz

mgraf

Erfahrenes Mitglied
Hallo,
ich steh gerade vor einem Problem und zwar möchte ich die Eingabe in eine Textbox limitieren.
Mein Problem ist, wenn ich die Zeichen eingebe funktioniert es ja wunderbar, aber sobald ich einen Absatz (Enter-Taste) einfüge, wirft er mir einen Fehler beim Abschicken aus.
Mittlerweile ist mir eingefallen, dass Absätze (Enter-Taste) mehr als ein Zeichen zählen...

Kann man das irgendwie umgehen, zB. Absätze auslassen beim zählen, Absätze wirklich doppelt zählen, Absätze "on-the-fly" entfernen....?

Hoffe es hat hier jemand einen Vorschlag und ich habe mich verständlich ausgedrückt ;-)

lg
michi
 
Zuletzt bearbeitet:
Moin michi,

ich weiss jetzt zwar nicht, inwiefern oder warum da eine Fehlermeldung beim Abschicken kommt, aber vorm Zählen könntest du per replace() bspw. diese Zeichen aus dem String entfernen.
 
Also hab ich mich doch missverständlich ausgedrückt - wusst ichs doch ;-)

Naja, in den Testläufen denke ich halt wie ein "Otto-Normal-Anwender", ich schreibe meinen Text mit 1000 Zeichen mit einigen Absätzen in Word, dann kopiere ich den Text (abgezählt mit der Wordfunktion) in das vorgegebene Textfeld - begrenzt auf 1000 Zeichen (inkl. Leerzeichen) -> Fehlermeldung

Mein Problem ist jetzt, der IE machts anscheinend richtig er zählt die Absätze (Enter) als 2 Zeichen, der FF nicht - nur als 1 Zeichen...

Die Fehlermeldung ist der Alert() bei Javascript und danach natürlich beim serverseitigen Zählen (Python)

Zum ausprobieren - es wird nichts gespeichert, aber die Überprüfung funktioniert
http://sandbox.fh-krems.ac.at/registration/tester

lg
michi
 
Naja, ich muss gestehen, dass ich selbst meine Texte nicht unbedingt in Word vorschreibe und erst recht nicht damit zähle(vielleicht macht man das heutzutage so, zu meiner Zeit hat man in der Schule Wörter per Hand gezählt :-))

Hier mal ne kleine Hilfsfunktion fürs String-Objekt, die Benutzung sollte daraus hervorgehen:
Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; 
                                charset=ISO-8859-1"   />
<meta name="author"             content="doktormolle" />
<meta name="date"               content="2009-02-10" />
<title>Test</title>
<script type="text/javascript">
<!--
String.prototype.count=function(arg)
{
  var args={
    tab:      (this.match(/\t/g))?(this.match(/\t/g)).length:0,
    space:    (this.match(/ /g))?(this.match(/ /g)).length:0,
    linebreak:(this.match(/\n/g))?this.match(/\n/g).length:0,
    chars:    this.replace(/[\r\n]/g,'').length
  }
  args.length=args.chars+args.linebreak*2;
  if(typeof arg =='undefined' || typeof args[arg]=='undefined')
    {
      var info='';
      for(var k in args)info+='\n'+k+':'+args[k];
      return info
    }
  return args[arg];
}

//-->
</script>
</head>
<body>
<form>
<textarea name="txt" cols="8" rows="10">
Halli
Hallö
Ha Lö Le
</textarea><br>
<input type="button" value="info"       onclick="alert(this.form.txt.value.count())">
<input type="button" value="tab"        onclick="alert(this.form.txt.value.count('tab'))">
<input type="button" value="space"      onclick="alert(this.form.txt.value.count('space'))">
<input type="button" value="linebreak"  onclick="alert(this.form.txt.value.count('linebreak'))">
<input type="button" value="chars"      onclick="alert(this.form.txt.value.count('chars'))">
<input type="button" value="length"     onclick="alert(this.form.txt.value.count('length'))">
</form>
</body>
</html>
 

Neue Beiträge

Zurück