Jobe2009 Geschrieben 6. Mai 2011 Teilen Geschrieben 6. Mai 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
chooter696 Geschrieben 6. Mai 2011 Teilen Geschrieben 6. Mai 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jobe2009 Geschrieben 6. Mai 2011 Autor Teilen Geschrieben 6. Mai 2011 Nein, an der if-Abfrage scheitert er nicht, er kommt rein Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
chooter696 Geschrieben 6. Mai 2011 Teilen Geschrieben 6. Mai 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 6. Mai 2011 Teilen Geschrieben 6. Mai 2011 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 6. Mai 2011 Teilen Geschrieben 6. Mai 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lilith2k3 Geschrieben 7. Mai 2011 Teilen Geschrieben 7. Mai 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
chooter696 Geschrieben 7. Mai 2011 Teilen Geschrieben 7. Mai 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.