Orgi Geschrieben 23. Dezember 2005 Teilen Geschrieben 23. Dezember 2005 So folgendes, ich habe ein Formular über das eine Eingabe in meine Datenbank erfolgt. Der Wert der Textareas darf nur eine bestimmte Größe erreichen sonst sprengen sie das Ausgabedesign. Die Begrenzung soll ziemlich simpel erfolgen, nämlich nur soviel wie man sieht von der Textarea. Ich bräuchte das ganze in PHP oder Javascript (wohl eher Javascript kann mir da mit PHP nix vorstellen). Mit Javascript kenn ich mich weiter nicht aus deshalb frag ich hier. Im Netz hab ich nur Beispiele gefunden wo die Zeichenmenge geprüft wurde. Nur wenn jemand zum Bsp. alle 10 Zeichen eine Zeile weiter springt, kommt er zum Ende des dargestellten Bereichs bevor diese Zeichenanzahl erreicht ist, und die Textarea wird erweitert. Es müsste also abgeprüft werden wieviel Zeilen oder so. Kann mir da jemand weiterhelfen oder mir nen paar hilfreiche Links geben? THX! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 23. Dezember 2005 Teilen Geschrieben 23. Dezember 2005 Hallo, mit JavaScript geht das doch recht simpel. Mit textareaname.value.length kannste die Länge des Textes ermitteln und dann brauchste ja nur noch mit onchange oder so darauf reagieren und prüfen ob die Länge noch erlaubt ist. Oder Du prüfst vor Absenden des Formulars ob die Länge in Ordnung ist. Aber ob man die Anzahl der Zeilen überprüfen kann, bin ich mir jetzt nicht sicher. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SNOWMAN Geschrieben 23. Dezember 2005 Teilen Geschrieben 23. Dezember 2005 [edit] Aber ob man die Anzahl der Zeilen überprüfen kann, bin ich mir jetzt nicht sicher. du kannst nach \n suchen, die geben in nem textarea n Zeilenumbruch an [/edit] OMG Hey, guck mal: I W was fällt dir da auf? unterschiedlich viel Platz wird benötigt Wenn du wirklich sowas machen willst musst du jedem möglichem Zeichen einen "Platzwert" zuwesen, gucken wieviel Platz insgesamt vorhanden ist und bei jedem getippten Zeichen den jeweiligen Platzwert hinzuzählen, bis der maximale erreicht wird. Am besten denk ich, eigenen sich die Pixel, die ein Buchstabe benötigt (space nicht vergessen) Als zB I hat (fiktiv) 3 Pixel, das W ist sehr breit, hat (fiktiv) 15 Pixel Ausrechnen wieviele Pixel passen, zB mal 20. Drückst du I hast du 20 - 3 = 17 nochmal I ist 17 - 3 usw. überprüfen ob der Wert negativ ist, ansonsten das Zeichen wieder entfernen und nachricht ausgeben das der Platz voll ist. Neben dessen noch überprüfen ob du \n (new Line) drin hast, berücksichtigen das Backspace gedrückt werden kann (Restplatz wird erhöht) usw. Und zudem solltest du das ganze auch Serverseitig abfragen, da ich bei mir ja Javascript deaktivieren kann. Also ich persönlich würde dir vorschlagen, schau wieoft ein M reinpasst und begrenze lediglich die maximale Zeichenlänge auf diese Anzahl. Ggf. nimm anstelle eines M ein W, kein text wird jemals länger sein als wenn er komplett aus Ws besteht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Orgi Geschrieben 23. Dezember 2005 Autor Teilen Geschrieben 23. Dezember 2005 Hmm ich dachte es wär irgendwie möglich das Ende der sichtbaren Textarea oder das Ende der so und so vielten Zeile zu prüfen. Der Benutzer soll innerhalb der sichtbaren Textarea die Infos so gestalten können wie er will, denn so werden sie auch später ausgegeben. Die Zeilenumbrüche zu zählen wär ne Möglichkeit, aber dann müsst ich am Ende zusätzlich noch die Anzahl der Zeichen zählen bevor automatisch umgebrochen wird. Leider reicht da nich mein Wissen was Javascript angeht . Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 23. Dezember 2005 Teilen Geschrieben 23. Dezember 2005 <textarea name="einText" cols="50" rows="10"> </textarea> Sollte doch die Größe beschränken? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Orgi Geschrieben 23. Dezember 2005 Autor Teilen Geschrieben 23. Dezember 2005 Nein, gibt nur die Größe an mit der die Textarea ausgegeben wird, du kannst darüber hinaus schreiben. Das ist ja mein Problem dachte eigentlich auch das es so einfach geht . Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SNOWMAN Geschrieben 23. Dezember 2005 Teilen Geschrieben 23. Dezember 2005 auf selfhtml.org hab ich jetzt auf die schnelle nix dazu gesehen, aber es scheint kein maxlength Attribut fürs <textarea> zu geben, richtig? ok, also, du kannst... arg.... das is echt kniffelig... du kannst entweder n <textarea> nehmen und einfach über JS/PHP die maximale anzhal der ziechen festlegen desweiteren scannst du nach \n die, wie gesagt, einen Zeilenumbruch darstellen. Wenn du nun zB nur 10 Zeilen maximal erlaubst machst du im PHP-Skript something like that: $text = substr($_POSt['text'],0,500); # beginne ab Zeichen 0 | 500 is das maxim an Zeichen $zeilen = explode("\n",$text,11); #Zerteile an "\n" maximal 11 mal | 10 Zeilen maximal, 11te Zeile hat den gesamten rest array_pop($zeilen); # das letzte element (11te zeile) wird aus dem array genommen $kompletter_text = ""; # leeren string anlegen bzw. wenn vorhanden leeren for($i=0;$i<10;$i++){ #for-schleife | 10 durchläufe $kompletter_text .= $zeilen[$i]; } [/php] Die überprüfung der Zeilenanzahl kannst auch mit JS machen, weiß aber nicht ob du mit JS da auch nach dem \n suchen musst oder ob das dann anders gehandhabt wird. ein imho ekliger workaround wäre: für jede zeile ein ein input-text mit maxlenght: [code]<input type="text" name="text[0] maxlength="10"><br> <input type="text" name="text[1] maxlength="10"><br> <input type="text" name="text[2] maxlength="10"><br> <input type="text" name="text[3] maxlength="10"><br>[/code] im post hast du dann $_POST['text'] was ein array darstellt, $_POST['text'][1] wäre die zweite Zeile Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Orgi Geschrieben 23. Dezember 2005 Autor Teilen Geschrieben 23. Dezember 2005 Ja das hab ich mir dann irgendwann auch gedacht das es kniffelig ist . Aber das Ganze muss ja irgendwie gehen, kann mir nicht vorstellen das es nicht schon etliche Male ähnliche Szenarios gab. Dank dir auf jedenfall schonmal, der Ansatz ist ganz gut, werd ma schaun ob ich das umsetzen kann. Ne andere Überlegung die ich grad hatte: Wenn man nach nem Zeilenumbruch die Leerzeichen als Zeichen zählen könnt, dann würde es ja mit ner maximalen Zeichenanzahl gehen. Geht das mit Javascript? Bin mir da grad garnich sicher wie sich das verhält. Dann könnt man einfach ausmessen wieviel reinpasst (mit dem W). aber ich glaub nach nem Zeilenumbruch is immer Ende was? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SNOWMAN Geschrieben 23. Dezember 2005 Teilen Geschrieben 23. Dezember 2005 ähm... ok, dein gedanke ist etwas schwer zu verstehen, aber ich versuchs mal mit meinen worten wiederzugeben, ob ichs begriffen hab: wenn man einen zeilenumbruch macht, rechnet man die verbrauchten Pixel aus und berechnet daraus dann, viele leere pixel noch für die zeile vorhanden sind. diese anzahl geteilt durch den pixelverbrauch eines spaces ist dann die anzahl der "nicht-vorhandenen-aber-trozdem-mal-so-tun-als-ob" spaces diese anzahl an fitiven-spaces werden mit zur anzahl an zeichen gerechnet. ja, so meintest dus doch, oder? das geht sicher. in einzelschritten ausgedrückt würde ich mir folgendes überlegen (unter berücksichtigung das man es in JS machen kann) - Ausrechnen, wieviele Pixel pro Zeile - Zuweißung der verbrauchten PIxel für jedes mögliche Zeichen das eingegeben wird (das wird ne Sch... blöde Arbeit) - Zeichen wurde eingegeben, Pixelwert abziehen und max. Zeichen -1 /- Ist das Zeichen ein Backspace/Entf -> welches zeichen war vorher da? Pixelwert wieder auf vorhandene platz hinzurechnen (!?Wie merk ich mir die Zeichen?!) /- ist das Zeichen ein \n -> Berechne verbrauchten Platz der Zeile, maximalplatz - verbruachterplatz = restplatz, restplatz/spaceplatz = fiktive spaces -> max.Zeichen - fiktive spaces Im bezug auf (!?Wie merk ich mir die Zeichen?!): Einen Stack erstellen der den eingegebenen Text parallel mitführt und der bei eingabe eines Backspace/Entf den letzten wert popt (zurückliefert und vom stack löscht) aber wie sowas in JS funktioniert... boa sorry, dafür kann ich das nich gut genug... Also ich stells mir sehr schwer vor, wenns überhaupt machbar ist, aber das muss dir jemand anderes sagen, das weiß ich nicht, sry. Aber mir kommt grad vom ganzen JS gerede ne andere Idee: Java-Applet. Ich kenn da n Forum, da hat man die Möglichkeit, anstelle eines solchen Textfeldes wie auch hier auf FI.de ein Java-Applet zu verwenden. Hat gleich wysiwyg und ich verwette meinen Popo drauf, das man da auch die maximalen Zeichen und Zeilen festlegen kann Laut Signatur ist das Applet von WoltLab, aber auf der homepage steht nix drüber.... hmm... wird wohl teil vom wbb sein :/ 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.