Veröffentlicht 6. Mai 201114 j 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
6. Mai 201114 j 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
6. Mai 201114 j 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
6. Mai 201114 j 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.
6. Mai 201114 j 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
7. Mai 201114 j 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
7. Mai 201114 j 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.