Rasnarock: Textarea maxlength

Hallo Leute,

ich bastel jetzt seit 2 Stunden an einem wahrscheinlich altbekannten Problem herum und hab auch schon eigentlich eine Lösung, nur die ist irgendwie nicht "praktisch".

Also ich habe ein Framework mit VIELEN VIELEN Seiten, auf denen VIELE VIELE Textareas sind. Im Framework wird einmal ein "Head" eingebunden, wo alle CSSbefehle und JS-Scripts stehen.

Ich hab bereits herausgefunden, daß maxlength bei textarea nicht funktioniert und man stattdessen ein JS auf onkeypress setzen müßte. Ein Beispiel dafür hab ich auch gefunden und es würde PERFEKT passen:

function CheckTA()  
{  
  
var max=20, textinhalt;  
  
textinhalt=document.text.feld.value;  
  
if (textinhalt.length >= max)  
{  
document.text.feld.value=textinhalt.substring(0,max);  
document.text.feld.blur();  
}  
}

Wie ich aber gesehen hab, funktioniert das nur bei Textareas, die "feld" heißen. d.h. ich üßte jetzt 100000 kleine JS schreiben damit ich jedes Feld abfragen kann - schwachsinnig.
Jetzt hab ichs schon mit document.getElementById(id) probiert und übergebe dort die IDs mit - funktioniert aber auch nicht.

Meine Felder sehen zur späteren Verarbeitung so aus:
<textarea cols="81" rows="3" onkeypress="CheckAT()" name="feldwerte[0][Inhalt]">Blah Blah</textarea>

Ich hatte schon ein id="Inhalt" dazugefügt (was mir eigentlich nicht so zusagt, da ich CSS mit id einbinde und ich in dem Moment etwas "unflexibler" wäre) und auch die function entsprechend drauf aufgebaut (soweit ichs verstanden hatte):

    function CheckAT(id)  
    {  
      var max=255 , textinhalt;  
      textinhalt=document.getElementById(id).feld.value;  
      alert (textinhalt.length);  
      if (textinhalt.length >= max)  
      {  
        document.getElementById(id).feld.value=textinhalt.substring(0,max);  
        document.getElementById(id).feld.blur();  
      }  
    }

Aber irgendwie geht das auch nicht - ich hätte eigentlich gerne, daß in der Funktion ermittelt wird, in welchem Objekt man sich gerade befindet und dort dann überprüft wird, ob eine bestimmte Anzahl Zeichen erreicht wurde und man dann keine weiteren Eingaben mehr tätigen kann.

Danke für eure Hilfe.

  1. Meine Felder sehen zur späteren Verarbeitung so aus:
    <textarea cols="81" rows="3" onkeypress="CheckAT()" name="feldwerte[0][Inhalt]">Blah Blah</textarea>

    Ganz einfach, du brauchst hier nur this:
    <textarea cols="81" rows="3" onkeypress="CheckAt(this)" name="feldwerte[0][Inhalt]">Blah Blah</textarea>

    und eine kleine Anpassung der Funktion:

    function CheckAt(feld){  
       var max=20, textinhalt = feld.value;  
       if (textinhalt.length >= max) {  
          feld.value=textinhalt.substring(0,max);  
          feld.blur();  
       }  
    }  
    
    

    Struppi.

    1. Hallo,

      Ganz einfach, du brauchst hier nur this:

      ja, hätte ich auch empfohlen.
      Und das hier:

      feld.blur();

      würde ich auch ersatzlos streichen. Wenn ich die maximale Zeichenzahl erreicht habe und deshalb kein weiteres Zeichen eingeben darf, ist das eine Sache. Wenn aber dadurch automatisch das Eingabefeld den Focus verliert und mich so dabei behindert, meine zu lange Eingabe zu korrigieren, ist das lästig.

      So long,
       Martin

      --
      Ein Snob ist ein Mensch, der sich auf ein Stachelschwein setzt, ohne eine Miene zu verziehen - nur weil ihm jemand gesagt hat, das sei ein Designersessel.