You are not logged in.

wcf.regNote.message

piep001

Intermediate

  • "piep001" started this thread

Posts: 338

Location: NRW

Occupation: Fachinformatiker (AE)

  • Send private message

1

Tuesday, June 1st 2004, 10:02am

Zeichenanzahl von <textarea> begrenzen

Moinsen!
Ich brauche mal wieder eure Hilfe.


Ziel:
Es geht darum, dass ich nen <textarea> Feld in nem Formular habe und dort nicht mehr als 2500 Zeichen eingegeben werden dürfen sollen.

Über die Datenbank, auf die die kompletten Formulardaten geschrieben werden, habe ich die Zeichenbegrenzung schon aufgesetzt (einfach das entsprechende Datenfeld mit VARCHAR(2500)-Datentyp festgelegt). Der Nachteil ist, dass wenn jemand mehr als 2500 Zeichen eingegeben hat, der Rest einfach abgeschnitten wird.
Ich möchte aber, dass der Anwender gleich bei der Eingabe schon eingeschränkt wird, damit ihm nicht hinterher wichtige Daten fehlen, wenn er doch mehr als 2500 Zeichen eingegeben hat. Ist einfach nicht Anwenderfreundlich und wie soll der auch wissen, wann die 2500 Zeichen erreicht sind.


meine bisherige Lösung:
Habe folgende Script-Teile irgendwo ausm Netz gezogen.

<script type="text/javascript">
<!--
function CheckLen(Target)
{
StrLen = Target.value.length
if (StrLen == 1 && Target.value.substring(0,1) == " ")
{Target.value = ""; StrLen = 0}

if (StrLen > 2499 ) {Target.value = Target.value.substring(0,2499) CharsLeft = 0}
else{CharsLeft = 2499 - StrLen}
document.neu.anzahl.value = CharsLeft
}
//-->
</script>

<form action="redirect.pl" method="post" name="neu" id="myform">
<textarea cols="60" rows="12" name="Problem" onChange="CheckLen(this)" onFocus="CheckLen(this)" onKeyDown="CheckLen(this)" onKeyUp="CheckLen(this)" wrap="VIRTUAL"></textarea>
<input type="text" name="anzahl" size="3" maxlength="3" readonly>
</form>


Frage:
Das Script klappt auch soweit echt gut, nur würde ich gerne zwei Änderungen vornehmen...
1) Ist es möglich, die Zeichenanzahl, die in dem <input> Feld ausgegeben wird, auch direkt als Text auszugeben? Also ohne Formularfeld.
2) Ist es möglich, dass die Zeichenanzahl schon bei Aufruf angezeigt wird und nicht erst wenn man in das <textarea> Feld klickt?
Spaß im Netz auf www.piep001.de

This post has been edited 1 times, last edit by "piep001" (Jun 1st 2004, 10:09am)


piep001

Intermediate

  • "piep001" started this thread

Posts: 338

Location: NRW

Occupation: Fachinformatiker (AE)

  • Send private message

2

Tuesday, June 1st 2004, 11:49am

Hab noch nen anderes Script gefunden, welches genau das macht, was ich wollte.


Lösung:
<script type="text/javascript">
<!--
function countDigits(){
var maxDigits = 2500; //maximale Zeichenanzahl
var areaString = document.forms[0].problem.value;
var currLength = areaString.length + 1;
var restLength = maxDigits - areaString.length;
if (restLength < 0)
{
restLength = 0;
}

document.getElementById("counter").innerHTML = restLength;
if (areaString.length >= maxDigits)
{
//die folgende Zeile entfernt alle Zeichen die größer als maxDigits sind
document.forms[0].problem.value = document.forms[0].problem.value.substring(0,maxDigits);
}
}
//-->
</script>

<form action="redirect.pl" method="post" name="neu" id="myform">
<textarea name="problem" cols="60" rows="12" onKeyUp="countDigits()" onClick="countDigits()"></textarea>
<span id="counter">2500</span>
</form>
Spaß im Netz auf www.piep001.de

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

3

Tuesday, June 1st 2004, 7:16pm

Und des zweite Script macht doch genau des was du wolltest
oder ??

Du musst höchstens noch beim Body ein OnLoad="countDigits()"
einfügen und dann überprüfst du die Anzahl gleich beim Laden.

Also brauchst du da jetzt noch Hilfe oder nicht ? :)

Ciao Ephraim

piep001

Intermediate

  • "piep001" started this thread

Posts: 338

Location: NRW

Occupation: Fachinformatiker (AE)

  • Send private message

4

Wednesday, June 2nd 2004, 8:33am

Achso, ne, ist fertig hier!! Klappt ja alles. ;) ;)
Wollte nur die funktionierende Lösung posten, damit es anderen vielleicht auch hilft, die damit Probleme haben oder die sowas suchen.

Quoted

Original von Ephraim
Du musst höchstens noch beim Body ein OnLoad="countDigits()"
einfügen und dann überprüfst du die Anzahl gleich beim Laden.
Warum soll ich die Anzahl gleich beim Laden prüfen lassen?
Der Wert 2500 steht ja schon da beim Laden der Seite.
Spaß im Netz auf www.piep001.de

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

5

Wednesday, June 2nd 2004, 8:51am

RE: Zeichenanzahl von <textarea> begrenzen

Quoted

Original von piep001
2) Ist es möglich, dass die Zeichenanzahl schon bei Aufruf angezeigt wird und nicht erst wenn man in das <textarea> Feld klickt?

Quoted

Original von piep001
Warum soll ich die Anzahl gleich beim Laden prüfen lassen?
Der Wert 2500 steht ja schon da beim Laden der Seite.


Des war meine Antwort auf die Frage Nr.2 aus deinem Ersten Post ;)
und ich hatte gedacht, dass du das Feld schon mit einem Text beim Laden
belegst, so dass dann die 2500 nicht stimmen am Anfang.

Ciao Ephraim

piep001

Intermediate

  • "piep001" started this thread

Posts: 338

Location: NRW

Occupation: Fachinformatiker (AE)

  • Send private message

6

Wednesday, June 2nd 2004, 11:20am

Doch doch, ist jetzt alles so, wie ich es wollte.

Gruß, piep
Spaß im Netz auf www.piep001.de

piep001

Intermediate

  • "piep001" started this thread

Posts: 338

Location: NRW

Occupation: Fachinformatiker (AE)

  • Send private message

7

Wednesday, June 2nd 2004, 12:20pm

Mist, war ja klar, das noch sowas kommt.
Ich hab ganz vergessen, dass ich noch Seiten habe (admin-bereich), wo der Inhalt der Felder erst ausgelesen wird, dann in das <textarea> Feld und hinterher wieder auf die Datenbank geschrieben wird. Zum Bearbeiten.

Da müsste ich die Funktion natürlich schon beim Aufruf der Seite ausführen.

Kann man "OnLoad()" auch noch woanders als im body verwenden?
Ich habe nämlich den Header in ner extra Datei und "OnLoad" brauche ich nur bei ganz wenigen Seiten.
Spaß im Netz auf www.piep001.de

piep001

Intermediate

  • "piep001" started this thread

Posts: 338

Location: NRW

Occupation: Fachinformatiker (AE)

  • Send private message

8

Wednesday, June 2nd 2004, 4:03pm

Hier ist ja gar nichts mehr los!!! :neutral:
Hab dann mal mühlselig selber was zusammen gebastelt.

Ich frage jetzt in der Header-Datei einfach ab, auf welcher Seite ich mich gerade befinde und lasse dementsprechend dann entweder OnLoad in den body schreiben oder halt nicht.

Das ist jetzt kein PHP sondern PERL-Code, das gab's aber nicht zur Auswahl beim Erstellen und die Formatierungen sind ja eh fast gleich.

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
use Switch qw(fallthrough);
use File::Basename;

my $filepath = $0;   # in $0 steht das gesamte aktuelle Verzeichnis inkl. Dateiname -> feste Perl-Var.
my $file File::Basename::basename $filepath;   # um den Dateinamen herauszufiltern

switch ($file) 
{
case "Seite1.pl"   { print (' OnLoad="countDigits1()"'); }
case "Seite2.pl"   { print (' OnLoad="countDigits2()"'); }
}




@Ephraim
PROBLEM GELÖST :lol:
Anregungen werden aber wie immer gerne entgegen genommen.
Spaß im Netz auf www.piep001.de

This post has been edited 1 times, last edit by "piep001" (Jun 2nd 2004, 4:04pm)


Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

9

Wednesday, June 2nd 2004, 8:21pm

Sorry war heute den ganzen Tag beschäftigt :(

Anders kannste des wohl auch nicht machen ...
OnLoad geht meines Wissen nur im Body Tag ...

Also so ist des doch eine schöne Lösung.

Ciao Ephraim

wcf.user.socialbookmarks.titel