Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

Nein, an der if-Abfrage scheitert er nicht, er kommt rein

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

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.

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

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 ;)

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.