jeffglennfox
New member
Hallo,
ich möchte die folgende Funktion benutzen um die Höhe von Textareas automatisch anzupassen:
Das funktioniert beim Event "keydown" auch einwandfrei. Ich möchte die Funtion aber ebenfalls mittels 'onload' auf Texareas anwenden, die schon einen Inhalt haben. Kann mir jemand einen Tip für einen Lösungsansatz geben, wie ich in diesem Fall auf die Inhalte der Textareas zugreife.
Gruss von Markus
- - - Aktualisiert - - -
Ich habe jetzt noch ein wenig rumprobiert und es jetzt so gelöst:
Gruss von Markus
- - - Aktualisiert - - -
Jetzt hat sich doch noch eine Folgefrage ergeben. Ich möchte erreichen, dass die in der Textarea festgelegte Mindesthöhe nicht unterschritten wird, bekomme dass aber nicht gelöst, da diese bei Ausführen der Funktion offenbar überschrieben wird. Hier nochmal der aktuelle Code:
Ich bin für Tips zur Lösung dankbar.
Gruss von Markus
- - - Aktualisiert - - -
mit diesem Versuch über das Auslesen der offsetHeight funktioniert es leider auch noch nicht perfekt (weil wenn man Zeilen löscht, sich die Textarea nicht wieder auf den min-height-Wert verkürzt) . Problem ist nach wie vor, dass nach dem ersten Ausführen der Funktion die min-height gelöscht wird, warum auch immer.
Gruss von Markus
- - - Aktualisiert - - -
Problem vollständig gelöst und funktioniert perfekt wie gewünscht:
Thema kann geschlossen werden.
Gruss von Markus
ich möchte die folgende Funktion benutzen um die Höhe von Textareas automatisch anzupassen:
Code:
var textarea = document.querySelector('textarea');
textarea.addEventListener('keydown', autosize);
function autosize(){
var el= this;
setTimeout(function(){
el.style.cssText = 'height:auto;';
// for box-sizing other than "content-box" use:
// el.style.cssText = '-moz-box-sizing:content-box';
el.style.cssText = 'height:' + el.scrollHeight + 'px';
},0);
}
Das funktioniert beim Event "keydown" auch einwandfrei. Ich möchte die Funtion aber ebenfalls mittels 'onload' auf Texareas anwenden, die schon einen Inhalt haben. Kann mir jemand einen Tip für einen Lösungsansatz geben, wie ich in diesem Fall auf die Inhalte der Textareas zugreife.
Gruss von Markus
- - - Aktualisiert - - -
Ich habe jetzt noch ein wenig rumprobiert und es jetzt so gelöst:
Code:
var textarea = document.querySelector('textarea');
window.document.addEventListener("load", autosize('load'));
textarea.addEventListener('keydown', autosize);
function autosize(value){
if (value == 'load' ) {var el= textarea;} else {el= this;}
setTimeout(function(){
el.style.cssText = 'height:auto;';
// for box-sizing other than "content-box" use:
// el.style.cssText = '-moz-box-sizing:content-box';
el.style.cssText = 'height:' + el.scrollHeight + 'px';
},0);
}
Gruss von Markus
- - - Aktualisiert - - -
Jetzt hat sich doch noch eine Folgefrage ergeben. Ich möchte erreichen, dass die in der Textarea festgelegte Mindesthöhe nicht unterschritten wird, bekomme dass aber nicht gelöst, da diese bei Ausführen der Funktion offenbar überschrieben wird. Hier nochmal der aktuelle Code:
HTML:
<textarea style="min-height:200px;" name="message" id="textarea" maxlength="1500" class="rc" >
Code:
window.document.addEventListener("load", autosize('load'));
window.addEventListener("resize", function(){autosize('load')}, false);
var textarea = document.querySelector('textarea');
textarea.addEventListener("keydown", autosize);
function autosize(value){
if (value == 'load' ) {var el= textarea;} else {el= this;}
setTimeout(function(){
el.style.cssText = 'height:auto;';
el.style.cssText = 'height:' + el.scrollHeight + 'px';
},0);
}
Ich bin für Tips zur Lösung dankbar.
Gruss von Markus
- - - Aktualisiert - - -
mit diesem Versuch über das Auslesen der offsetHeight funktioniert es leider auch noch nicht perfekt (weil wenn man Zeilen löscht, sich die Textarea nicht wieder auf den min-height-Wert verkürzt) . Problem ist nach wie vor, dass nach dem ersten Ausführen der Funktion die min-height gelöscht wird, warum auch immer.
Code:
window.document.addEventListener("load", autosize('load'));
window.addEventListener("resize", function(){autosize('load')}, false);
var textarea = document.querySelector('textarea');
textarea.addEventListener("keydown", autosize);
function autosize(value){
if (value == 'load' ) {var el= textarea;} else {el= this;}
setTimeout(function(){
var minHeight = el.offsetHeight+2; /* +2 insgesamt für Rahmen oben und unten */
el.style.cssText = 'height:auto;';
el.style.cssText = 'min-height:'+minHeight+'px;';
el.style.cssText = 'height:' + el.scrollHeight + 'px';
},0);
}
Gruss von Markus
- - - Aktualisiert - - -
Problem vollständig gelöst und funktioniert perfekt wie gewünscht:
HTML:
<textarea rows="7" name="message" id="textarea" maxlength="1500" >
Code:
window.document.addEventListener("load", autosize('load'));
window.addEventListener("resize", function(){autosize('load')}, false);
var textarea = document.querySelector('textarea');
textarea.addEventListener("keydown", autosize);
function autosize(value){
if (value == 'load' ) {var el= textarea;} else {el= this;}
setTimeout(function(){
var rows = el.rows;
el.style.cssText = 'height:auto;';
el.rows = rows;
el.style.cssText = 'height:' + el.scrollHeight + 'px';
},0);
}
Thema kann geschlossen werden.
Gruss von Markus
Zuletzt bearbeitet: