Wypełniam obszar tekstowy treścią do edycji przez użytkownika.
Czy można go rozciągnąć, aby dopasować zawartość do CSS (jak overflow:show
w przypadku div)?
Wypełniam obszar tekstowy treścią do edycji przez użytkownika.
Czy można go rozciągnąć, aby dopasować zawartość do CSS (jak overflow:show
w przypadku div)?
Odpowiedzi:
Nie całkiem. Zwykle odbywa się to za pomocą javascript.
jest tutaj dobra dyskusja o sposobach zrobienia tego ...
Automatyczny rozmiar obszaru tekstowego przy użyciu Prototype
tylko jedna linia
<textarea name="text" oninput='this.style.height = "";this.style.height = this.scrollHeight + "px"'></textarea>
this.scrollHeight + "px"
na this.scrollHeight + 3 + "px"
spowoduje, że obszar tekstu będzie wystarczająco duży, aby nie pokazywał paska przewijania.
Oto funkcja, która działa z jQuery (tylko dla wysokości, a nie szerokości):
function setHeight(jq_in){
jq_in.each(function(index, elem){
// This line will work with pure Javascript (taken from NicB's answer):
elem.style.height = elem.scrollHeight+'px';
});
}
setHeight($('<put selector here>'));
Uwaga: operator poprosił o rozwiązanie, które nie korzysta z Javascript, jednak powinno to być pomocne dla wielu osób, które napotkają to pytanie.
To bardzo proste rozwiązanie, ale na mnie działa:
<!--TEXT-AREA-->
<textarea id="textBox1" name="content" TextMode="MultiLine" onkeyup="setHeight('textBox1');" onkeydown="setHeight('textBox1');">Hello World</textarea>
<!--JAVASCRIPT-->
<script type="text/javascript">
function setHeight(fieldId){
document.getElementById(fieldId).style.height = document.getElementById(fieldId).scrollHeight+'px';
}
setHeight('textBox1');
</script>
<style> textarea { resize: none; overflow: auto; } </style> <!--TEXT-AREA--> <textarea onkeyup="setHeight.call(this);">Hello World</textarea> <!--JAVASCRIPT--> <script type="text/javascript"> function setHeight(){ this.style.height = '1px'; this.style.height = this.scrollHeight + 'px'; } </script>
zasadzie najpierw musisz ustawić wysokość na 1px, z tego powodu: stackoverflow.com/questions/10722058/ ...
Kolejne proste rozwiązanie do dynamicznej kontroli obszaru tekstowego.
<!--JAVASCRIPT-->
<script type="text/javascript">
$('textarea').on('input', function () {
this.style.height = "";
this.style.height = this.scrollHeight + "px";
});
</script>