Ferdi: Textarea Zeilen, Zeilenläne und Zeichen begrenzen

Hallo Forum und Javascriptprofis,

da ich den Inhalt einer Textarea in ein über php generiertes PDF eintrage und hierfür einen ganz bestimmten Platz zur Verfügung habe, stellt sich mir die Frage der Begrenzung einer Textarea.

In Sachen Zeichen mitzählen bijn ich schon einen Schritt weiter gekommen, aber ich bräuchte Ratschläge, mit welchen Hilfsmitteln ich die Zeilenlänge beschränken oder autoumbrechen kann und wie ich die Gesamtanzahl der Zeilen begrenzen kann.

Hier mein bisheriger Code:

  
<script language="javascript">  
function limitChars(textarea, limit, infodiv)  
{  
	var text = textarea.value;	  
	var textlength = text.length;  
	var info = document.getElementById(infodiv);  
  
	if(textlength > limit)  
	{  
		info.innerHTML = 'Nicht mehr als '+limit+' Zeichen!';  
		textarea.value = text.substr(0,limit);  
		return false;  
	}  
	else  
	{  
		info.innerHTML = 'Noch '+ (limit - textlength) +' Zeichen übrig.';  
		return true;  
	}  
}  
</script>  
</head>  
<body>  
  
<form>  
  
	<div style="padding:10px">  
		  
		<textarea name="comment" id="comment" rows="6" cols="30" onkeyup="limitChars(this, 200, 'charlimitinfo')"></textarea><br />  
<span id=\"charlimitinfo\" style=\" float:left; color:#aa3333; font-size:15px; font-family:vardana\" >Max. 200 Zeichen</span>  

Gruß, Ferdi

  1. Lieber Ferdi,

    kurze Antwort: es ist unmöglich.

    Lange Antwort:
    Mit ein paar Tricks kannst Du dem User das Leben künstlich erschweren, indem Du z.B: die Scrollbar per CSS ausschaltest (textarea {overflow:hidden;}) und indem Du mit JavaScript nach einer bestimmten Anzahl Zeichen keine weiteren Zeichen in der Textarea mehr stehen lässt, sondern alles Folgende einfach wieder entfernst. Ebenso kannst Du nach einer Maximalanzahl an Zeichen ein Zeilenende setzen (mit den Steuerzeichen '\u0a' und '\u0d')

    Aber ohne CSS und ohne JavaScript kann der User wieder ungestört seine Lebensbeichte verfassen und abschicken.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Aber ohne CSS und ohne JavaScript kann der User wieder ungestört seine Lebensbeichte verfassen und abschicken.

      Hallo Felix,

      meine User sind nicht meine Feinde. Meistens jedenfalls.

      Es geht hier mehr um ei9ne Eingabehilfe. Bisher muss der User selber darauf achten, dass sien Inhalt später noch in die "Box" passt. Dabei möchte ich Ihn unterstützen.

      Grüße, Ferdi

      1. Lieber Ferdi,

        meine User sind nicht meine Feinde. Meistens jedenfalls.

        dann lass' es mich anders formulieren: Dein Ansinnen ist Unfug!

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. dann lass' es mich anders formulieren: Dein Ansinnen ist Unfug!

          Hallo Felix,

          das ist gleichermaßen unverschämt, wie falsch.

          Aber ein gutes Beispiel dafür, warum Programmierer oft von "normalen" Menschen als Praxisdeppen angesehen werden und es u.a. deshalb Jobs wie IT-Koordinatoren gibt.

          Ich könnte Dir nun erklären, warum ich das so sehe und machen will, einzig, es wird sinnlos sein und bleiben. Für manche Bereiche des normalen Lebens und Miteinanders ist nicht jeder geeignet. Das meine ich gar nicht nicht wertend, sondern ausschließlich beschreibend.

          Freundlichst, Ferdi

          1. Lieber Ferdi,

            dann lass' es mich anders formulieren: Dein Ansinnen ist Unfug!

            das ist gleichermaßen unverschämt, wie falsch.

            so, findest Du? Soweit mir bekannt ist, lässt sich Dein Wunsch unter den gegebenen Voraussetzungen, sprich den von Dir genannten Mitteln (HTML, CSS, event. JavaScript) nur höchst unzureichend und nicht garantiert umsetzen, da Webseiten (zunächst) keine Printdokumente sind. Und HTML/CSS/JavaScript ist kein DTP-Programm.

            Aber ein gutes Beispiel dafür, warum Programmierer oft von "normalen" Menschen als Praxisdeppen angesehen werden und es u.a. deshalb Jobs wie IT-Koordinatoren gibt.

            Egal für was Du mich jetzt hälst, mit den genannten Technologien ist Dein Ansinnen nicht zufriedenstellend umsetzbar. Wenn Du das dann nicht als Unfug bezeichnen willst - bitteschön. Meine Auffassung ist eben so, dass nur die zufriedenstellend umsetzbaren Anforderungen auch sinnvolle Ansinnen sind, und wenn das nicht zutrifft, dann muss man den gewählten Pfad eben verlassen, wenn es kein Unfug werden soll.

            Ich könnte Dir nun erklären, warum ich das so sehe und machen will, einzig, es wird sinnlos sein und bleiben.

            Nein, nicht sinnlos, sondern irrelevant. Die gewählten Technologien unterstützen keine "Printmedien-Denkweise" - jedenfalls nur höchst unzureichend, wenn wir von einer Bildschirmdarstellung reden. Print-Stylesheets nehme ich von dieser Behauptung weitestgehend aus.

            Für manche Bereiche des normalen Lebens und Miteinanders ist nicht jeder geeignet. Das meine ich gar nicht nicht wertend, sondern ausschließlich beschreibend.

            Wie Du meinst. Hier sind wir in einem technisch orientierten Fachforum, das nicht unbedingt in allen Aspekten zum "normalen Leben und Miteinander" gezählt werden kann (oder sollte).

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. Egal für was Du mich jetzt hälst, mit den genannten Technologien ...

              ...hältst!

              Liebe Grüße zurück

              Ferdi ;-)

              1. Lieber Ferdi,

                Egal für was Du mich jetzt hälst, mit den genannten Technologien ...

                ...hältst!

                stimmt. :-)

                Liebe Grüße,

                Felix Riesterer.

                --
                ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
      2. Hi!

        Es geht hier mehr um ei9ne Eingabehilfe. Bisher muss der User selber darauf achten, dass sien Inhalt später noch in die "Box" passt. Dabei möchte ich Ihn unterstützen.

        Die einzige Unterstuetzung die mir da einfaellt, ist per JS Zeichen zu zaehlen und anzuzeigen. Entweder als Countdown zu einem ungefaehrem Maximalwert, oder als normaler Zaehler. Dann hat der User eine ungefaehre Vorstellung, wie lang sein Text wird. Bei ungefaehr bleibt es aber auch.

        --
        "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
              - T. Pratchett
        1. Hallo,

          Die einzige Unterstuetzung die mir da einfaellt, ist per JS Zeichen zu zaehlen und anzuzeigen. Entweder als Countdown zu einem ungefaehrem Maximalwert, oder als normaler Zaehler. Dann hat der User eine ungefaehre Vorstellung, wie lang sein Text wird. Bei ungefaehr bleibt es aber auch.

          nur eine Idee:

          ein p-Element anlegen mit Breite wie im PDF
             (Ich glaube, das Element muss sichtbar sein,
              kann aber außerhalb des Viewports liegen)
          Zeichensatz, Zeichengröße und Zeilenabstand (etc.) wie im PDF einstellen
          bei der Eingabe die Zeichen in das Element einfügen und die Höhe bestimmen

          Es bleibt aber das Problem, dass im PDF und im Browser die Darstellung nicht immer exakt gleich ist.

          Gruß, Jürgen

          1. Dann hat der User eine ungefaehre Vorstellung, wie lang sein Text wird. Bei ungefaehr bleibt es aber auch.

            Hallo Praktiker,

            Du benutzt bööse Worte. "Ungefähr!" Schäm' Dich!

            Gimme five :-))

            Ferdi

  2. In Sachen Zeichen mitzählen bijn ich schon einen Schritt weiter gekommen, aber ich bräuchte Ratschläge, mit welchen Hilfsmitteln ich die Zeilenlänge beschränken oder autoumbrechen kann und wie ich die Gesamtanzahl der Zeilen begrenzen kann.

    Hier stellt sich die Frage, was du unter autoumbrechen verstehst. Das macht ja der Browser an sich schon von alleine und du hast auch keine unmittelbare Kontrolle darüber. Mit ist nicht klar, an welcher Stelle du einen Umbruch verhindern willst, im der Textarea, im DIV oder im PDF Dokument?

    Hier mein bisheriger Code:
    <script language="javascript">

    Argh, aus welcher Mottenkiste hast du diese Zeile?
    Sie müßte vermutlich eher so lauten(es sei denn deinen Dokumente sind noch in HTML 3 verfaßt):

    <script type="text/javascript">

    Struppi.

    1. Hi Struppi,

      Mit ist nicht klar, an welcher Stelle du einen Umbruch verhindern willst, im der Textarea, im DIV oder im PDF Dokument?

      Nicht verhindern. Generieren.
      Also quasi Zeichen mitzählen und nach z.b. 40 Zeichen einen Zeilenumbruch erzwingen.

      Es ist tatsächlich so, wie Jürgen hier im Thread sagt. Man bekommt es ungefähr hin. Ich gebe dem User vor, in der Textarea max. 5 Zeilen zu schreiben und beschränke Gesamtzeichenanzahl und Zeilenzeichenanzahl. Da ich auch die Zeichen in Font und Fontgröße im PDF bestimme, kann ich dem User hiermit eine ungefähre Eingabehilfe zur Verfügung stellen. Natürlich nichts 100%iges, aber 100% besser, als ganz ohne Hilfe. Darum gehts, nicht um mehr und nicht um weniger. Ein bisserl fuzzy halt ;-)

      Gruß, Ferdi