Tôi đang điền vào một vùng văn bản với nội dung để người dùng chỉnh sửa.
Có thể làm cho nó kéo dài để phù hợp với nội dung với CSS (như overflow:show
đối với div) không?
Tôi đang điền vào một vùng văn bản với nội dung để người dùng chỉnh sửa.
Có thể làm cho nó kéo dài để phù hợp với nội dung với CSS (như overflow:show
đối với div) không?
Câu trả lời:
Không hẳn vậy. Điều này thường được thực hiện bằng cách sử dụng javascript.
có một cuộc thảo luận tốt về cách thực hiện điều này ở đây ...
một dòng duy nhất
<textarea name="text" oninput='this.style.height = "";this.style.height = this.scrollHeight + "px"'></textarea>
this.scrollHeight + "px"
để this.scrollHeight + 3 + "px"
làm cho vùng văn bản đủ lớn để nó không hiển thị thanh cuộn.
Đây là một hàm hoạt động với jQuery (chỉ dành cho chiều cao, không phải chiều rộng):
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>'));
Lưu ý: op đã yêu cầu một giải pháp không sử dụng Javascript, tuy nhiên điều này sẽ hữu ích cho nhiều người gặp câu hỏi này.
Đây là một giải pháp rất đơn giản, nhưng nó phù hợp với tôi:
<!--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>
về cơ bản bạn phải thiết lập chiều cao để 1px đầu tiên, vì điều này: stackoverflow.com/questions/10722058/...
Một giải pháp đơn giản khác để kiểm soát vùng văn bản động.
<!--JAVASCRIPT-->
<script type="text/javascript">
$('textarea').on('input', function () {
this.style.height = "";
this.style.height = this.scrollHeight + "px";
});
</script>