Какой подход вы используете, конечно, зависит от вашей конечной цели. Если вы хотите отправить результаты с помощью формы, то использование собственных элементов формы означает, что вам не нужно использовать скрипты для отправки. Кроме того, если сценарии отключены, резервное копирование по-прежнему работает без причудливых эффектов роста-сжатия. Если вы хотите получить простой текст из контентного элемента, вы всегда можете использовать скрипты, такие как node.textContent чтобы html, который браузеры вставляют в пользовательский ввод.
В этой версии используются собственные элементы формы с небольшими уточнениями в некоторых из предыдущих сообщений.
Это позволяет также уменьшать размер содержимого.
Используйте это в сочетании с CSS для лучшего контроля.
<html>
<textarea></textarea>
<br>
<input type="text">
<style>
textarea {
width: 300px;
min-height: 100px;
}
input {
min-width: 300px;
}
<script>
document.querySelectorAll('input[type="text"]').forEach(function(node) {
var minWidth = parseInt(getComputedStyle(node).minWidth) || node.clientWidth;
node.style.overflowX = 'auto'; // 'hidden'
node.onchange = node.oninput = function() {
node.style.width = minWidth + 'px';
node.style.width = node.scrollWidth + 'px';
};
});
Вы можете использовать что-то подобное с элементами <textarea>
document.querySelectorAll('textarea').forEach(function(node) {
var minHeight = parseInt(getComputedStyle(node).minHeight) || node.clientHeight;
node.style.overflowY = 'auto';
node.onchange = node.oninput = function() {
node.style.height = minHeight + 'px';
node.style.height = node.scrollHeight + 'px';
};
});
Это не мерцает в Chrome, результаты могут отличаться в других браузерах, поэтому проверьте.