Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Programmierung und Datenbanken (https://boardunity.de/programmierung-datenbanken-f23.html)
-   -   Textbox dynamisch vergrößern? (https://boardunity.de/textbox-dynamisch-vergr-ern-t2622.html)

LonelyPixel 02.12.2004 22:18

Textbox dynamisch vergrößern?
 
Hi,
ich suche eine Möglichkeit, eine <textarea/> in HTML mit JavaScript dynamisch in der Höhe an den eingegebenen Text anzupassen, so wie es iChat scheinbar tut. (http://www.cs.kuleuven.ac.be/~remko/psi/tmp/ichat.mov)
Ein kurzer Überblick über das textarea-Objekt im Firefox-DOM-Inspector hat mich nicht weitergebracht. Ich hab gehofft, sowas wie die Höhe des aktuellen Inhalt zu finden. Kann mir da jemand weiterhelfen oder jemanden nennen, den ich mit sowas buggen kann?

Nev 02.12.2004 23:39

Hi LonelyPixel

So auf die schnelle fällt mir nix ein, da häng ich mit dem erreichen des Area-Seite.

Zumerweitern des Text-Areas, kannst du dieses Beispiel her nehmen:


<html>
<head>
<script>
<!--
function increaseNotesHeight(thisTextarea, add) {
if (thisTextarea) {
newHeight = parseInt(thisTextarea.style.height) + add;
thisTextarea.style.height = newHeight + "px";
}
if (document.getElementById('notes_height')) {
document.getElementById('notes_height').value = newHeight;
}
}

function decreaseNotesHeight(thisTextarea, subtract) {
if (thisTextarea) {
if ((parseInt(thisTextarea.style.height) - subtract) > 30) {
newHeight = parseInt(thisTextarea.style.height) - subtract;
thisTextarea.style.height = newHeight + "px";
}
else {
newHeight = 30;
thisTextarea.style.height = "30px";
}
}
if (document.getElementById('notes_height')) {
document.getElementById('notes_height').value = newHeight;
}
}
-->
</script>
</head>
<body>
<form name="adminForm">
<input type="button" onclick="increaseNotesHeight(document.adminForm.ta sk_notes, 50);" value="bigger" />
<input type="button" onclick="decreaseNotesHeight(document.adminForm.ta sk_notes, 50);" value="smaller" />
</nobr>
</p>
<textarea name="task_notes" id="task_notes" class="one_pixel_border" cols="40" style="height: 250px; width: 100%;" wrap="virtual">
</textarea>


</form>
</body>
</html>



Vielleicht fällt mir noch ne Lösung ein.

Halte uns bitte am Laufenden

LonelyPixel 03.12.2004 07:10

So, kann jetzt bitte endlich jemand diese besch***n Code-Blöcke entweder korrigieren oder ganz rauswerfen? Man kann _überhaupt nicht_ damit arbeiten, wenn man wegen jedem bisschen Scrollen inner- und außerhalb dieser blöden Box rumblättern muss, bloß dass der Scrollbalken erscheint!!! *grr*

Sorry, das war gegen die Admins.

Ja, so Buttons zum manuellen Ändern der Größe (soweit ich den Code lesen konnte) kann ich schon auch machen, sowas war auch mein ursprünglicher Plan. Aber eine automatische Anpassung wär halt schon viel cooler... ;)

Jan Stöver 03.12.2004 10:43

Zitat:

So, kann jetzt bitte endlich jemand diese besch***n Code-Blöcke entweder korrigieren oder ganz rauswerfen? Man kann _überhaupt nicht_ damit arbeiten, wenn man wegen jedem bisschen Scrollen inner- und außerhalb dieser blöden Box rumblättern muss, bloß dass der Scrollbalken erscheint!!! *grr*

Sorry, das war gegen die Admins.
In dem Tonfall erwartest du Hilfe? Nicht wirklich oder .... naja wir haben ja bald Weihnachten ... also ehrlich ... :eek:

Xenon 03.12.2004 11:33

*gg* welche freundliche Art um hilfe zu ersuchen....

ich geb dir nen tip:
kopier das ganze in nen texteditor rein, wenn dir die codeboxen nicht gefallen, das sind nicht so viele taste, als das es wehtun würde...

Fabchan 03.12.2004 12:12

Ich würde dir empfehlen, einfach die Zeilenumbrüche innerhalb des Inhalts der <textarea> zu zählen und dann dementsprechend das HTMl-Attribut rows der Textarea anpassen, dabei muss es immer die Anzahl der Zeilenumbrüche + 1 sein, damit zu niemald null bekommst! Das funktioniert allerdings nur dann richtig, wenn du für die <textarea> das Attribut wrap="off" setzt.

Ein Beispiel, die sowas in PHP realisiert wurde, findest du hier:
http://kalender.infinite-server.de/i...&id=1064854576

LonelyPixel 03.12.2004 12:55

Ich habe diesen Ton verwendet, da es bereits mind. eine Diskussion darüber gab. Scheinbar interessiert sowas aber niemanden. Schade. Naja, wenn ihr alle so toll damit zurecht kommt, werde ich mich natürlich der Mehrheit beugen.

Die nowrap-Lösung ist leider wenig praktikabel, da man dann ständig am Blättern wäre - nach rechts. Würdest du das gerne im Post-Editor eines Forums z.B. tun? ;) Ich vermute, dass dafür irgendwie die innere Höhe des Textfelds ermittelt werden muss, konnte da aber nichts finden. Nunja, wenn's net geht, geht's net. Wär halt bloß ein cooles Feature gewesen...

Boardster 03.12.2004 12:58

@LonelyPixel: die Codeboxen müssen ja nicht genutzt werden. Alternativ schreibt man den Code direkt in den Beitragstext und formatiert den Code (z.B. [COLOR=DarkRed][FONT=Courier New] ).

Ich habe den Beitrag von Nev zur Demonstration entsprechend angepasst.

LonelyPixel 16.02.2005 23:44

Oh, die letzte Antwort muss mir damals irgendwie entgangen sein. Ja, sowas wäre natürlich ne Idee, aber da muss jeder Nutzer mitspielen (und somit das code-Tag für nutzlos erklären; außerdem isses umständlicher) und leider kommen die meisten gängigen Foren offensichtlich nicht mit führenden Leerzeichen zurecht, sodass ein Einrücken wie im Code dann nicht angezeigt wird. Hm, taugt alles irgendwie nix... Gute Nacht... ;)

Ich werd mit dem eigentlichen Problem mal bei mozillaZine nachfragen. Ich hab nämlich so das dumme Gefühl, dass das überhaupt nicht geht. :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 Uhr.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25