bble: Textarea dynamisch die Größe anpassen

Hallo,

ich habe folgende 2 Probleme:
1. Ich kann nicht besonders gut Javascript und
2. muss ich ein Textfeld dynamisch in der Höhe, also der Row-Anzahl anpassen.

Das ist wenn überhaupt, meiner Meinung nach nur mittels Javascript möglich mit sowas wie "onKeyDown", oder?

Der Benutzer soll in das Textfeld das anfangs nur aus einer Zeile besteht seinen Text eingeben, sobald er die Cols übertrifft, soll das Textfeld automatisch nach unten erweitert werden, um eine Zeile, also das rows-attribut angepasst werden und in der zweiten Zeile weitergeschrieben werden. So das quasi nie gescrollt werden muss und am besten der Balken gar nicht da ist...

Als Anregung, das hab ich hier im Archiv gefunden, dort wurde das Problem wohl schon so halb gelöst, der Code funktioniert bei mir aber nur bedingt

http://forum.de.selfhtml.org/archiv/2005/1/t99240/#m606042

Hatte jemand schon mal eine solche Problemstellung (zum. Daniel_Petratsch, vielleicht liest du das ja??? :-) )? Wenn ja, wie gelöst? Wenn nein, hat jemand Ansätze, Ideen, Links was ich mir anschauen könnte, LÖSUNGEN? ;-)

Bin für alles dankbar!

Grüße

bble

  1. Hi bble,

    zwar auf Englisch aber hilft dir vielleicht schon mal'n Stück weiter:

    http://www.felgall.com/jstip45.htm

    Gruß
    Antipitch

    1. Hi,

      vielen Dank! Das hat mir schon mal sehr weitergeholfen! Ich hab jetzt folgendes gebaut:

      function sz(t) {
        a = t.value.split('\n');
        b=1;
        for (i=0; i < a.length; i++) {
          if (a[i].length >= t.cols) b+= Math.floor(a[i].length/t.cols);
        }
        b+= a.length;
        t.rows = b-1;
      }

      Damit funktioniert auch das löschen. Ich hab aber ein Problemchen, das nicht wild ist, wenn man z.B. den unteren Text eingibt bei der Textarea mit 40 also:
      <form name="myform"><textarea cols="40" rows="1" onclick="sz(this);" onkeyup="sz(this);" style="overflow: auto;" scroll="none"></textarea></form>

      den folgenden Text:

      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque ut nisl eget nisi eleifend commodo. Integer vitae nisl ac dolor ultrices lobortis. In aliquam arcu sit amet quam. Aliquam magna lorem bkla alanalas lasnas aslndöakn asölmasd ölmaslmsdlms dölamdlmaslödmasd öaslmdasd asölmasd asödlmasd asdlöm asölmdasd asödlmasdlömslm slmsmslmslm dslömdöalmd lmlm

      Dann wird keine Zeile dazugefügt erst wenn man noch ein paar Buchstaben dazutippt! Wahrscheinlich liegt das an der Rundung von floor? Ich hab schon probiert zu prüfen ob die letzte Spalte also a[a.length] die länge <= die Hälfte der Cols ist füg noch eine row hinzu zu b also, aber das hat nicht funktioniert, hat jemand noch andere Ideen?
      Danke!

      Grüße

      Benny