Zum Inhalt springen

Javascript length Problem


Jobe2009

Empfohlene Beiträge

Hallo,

ich habe ein kleines Problem mit dem Zählen von Zeichen in einer JavaScript-Funktion. Der Text in einem Textfeld (<textarea>) muss begrenzt werden, da das entsprechende Datenbankfeld nur eine bestimmte Anzahl Zeichen erlaubt (z.B 50 oder 2000). Das Attribut maxlength wird jedoch von einigen Browsern nicht unterstützt (z.B Firefox), deswegen wird hier durch folgende Funktion (bei onKeyPress) die Zeichen gezählt:

function doKeyTextPress(element, maxL)

	{

		// prevent entering more than maxLength characters

		if( maxL && element.value.length > maxL )

		{

			element.value=element.value.substring(0,maxL-1);

			element.focus();

		}

	}

Das Problem ist, das die Browser Absätze ("Entertaste") unterschiedlich zählen, nämlich einmal mit 1 Zeichen (FF) und mit 2 Zeichen (IE). Die Methode das es mit zwei Zeichen gezählt wird, ist in diesem Falle auf jedenfall "richtig" da die verarbeitung (speichern) des Textfeldinhalts mit Java geschieht (und da Zählt ein Zeichenumbruch ebenfalls als 2 Zeichen (\n).

Kann mir jemand einen Tipp geben, wie das Problem zu lösen wäre??

mfg

Jobe

Link zu diesem Kommentar
Auf anderen Seiten teilen

du musst uns schon emhr geben damit wir dir helfe können. aber normaler weise müsste er ja schon an deiner if abfrage scheitern.

denn

if( maxL && element.value.length > maxL )

müsst normalerweise:

if((maxL == true) && (element.value.length > maxL) )

heisen wobei das == true eigentlich weggelassen werden kann. die klammern aber nicht

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem ist, das die Browser Absätze ("Entertaste") unterschiedlich zählen, nämlich einmal mit 1 Zeichen (FF) und mit 2 Zeichen (IE).

einfach das zeichen für Enter abfangen und überprüfen welcher browser verwendet wird. und wnen es nicht der ie ist machst du halt manuell ein zweites zeichen weg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eine JavaScript Abfrage würde bei mir z.B. gar nicht funktionieren. JavaScript wird bei mir nicht ausgeführt, d.h. ich kann in ein Input Feld somit einen Text eingeben, der länger als Dein Datenbankfeld ist, Dein action-Script im Form wird, ja trotzdem ausgeführt (beim Submit). Im Normalfall wird die Datenbank später einfach die Eingabe passend abtrennen.

Generell werden Prüfungen nicht via JavaScript durchgeführt, da diese ohne Probleme deaktiviert werden können. Die Prüfungen werden innerhalb des Scriptes, das auch das SQL Statement entsprechend aufbaut, durchgeführt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eine JavaScript Abfrage würde bei mir z.B. gar nicht funktionieren. JavaScript wird bei mir nicht ausgeführt, d.h. ich kann in ein Input Feld somit einen Text eingeben, der länger als Dein Datenbankfeld ist, Dein action-Script im Form wird, ja trotzdem ausgeführt (beim Submit). .
Da du aber nicht weißt wer das am Ende benutzen soll spielt das keine Rolle ;)

Generell werden Prüfungen nicht via JavaScript durchgeführt, da diese ohne Probleme deaktiviert werden können. Die Prüfungen werden innerhalb des Scriptes, das auch das SQL Statement entsprechend aufbaut, durchgeführt.

Das stimmt nicht. Normalerweise wird beides gemacht. Alles was Clientseitig geprüft werden kann sollte dort auch geprüft werden um unnötige Roundtrips zum Server zu vermeiden. Natürlich sollten die Eingaben auf dem Server nochmal validiert werden um sicher zu gehen das keine Manipulierten Daten kommen oder von einer anderen Oberfläche die dies nicht geprüft hat.

@Jobe2009

Dir wird wahrscheinlich nichts anderes übrig bleiben das selber beim Tastendruck je nach Browser zu handhaben. Vielleicht hilft dir ja dieser Link weiter:

SELFHTML Forumsarchiv / 2009 / Mai / MaxLength für TextArea

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum so kompliziert?

Ich würde den Benutzer einfach darauf hinweisen, dass seine Eingabe in dieses Feld eben nur x Zeichen sein darf.

Würde vor dem Submit einfach zählen, ob die Grenze eingehalten worden ist, wenn nein, dann eben Fragen ob der Rest abgeschnitten werden darf. Fertig.

Serverseitig muss es eh nochmal validiert werden - und nicht nur wegen der Länge ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Würde vor dem Submit einfach zählen, ob die Grenze eingehalten worden ist

darum geht es doch. Er will doch nur zählen bloß das enter zeichen wird halt in den browsern unterschiedlich interpretiert mal 1 zeichen und mal 2 zeichen und da es als 2 Zeichen in sql gewertet wird muss er das halt so kompliziert überprüfen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...