Вы можете вытянуть .value
текстового поля в любой элемент, на который вы нацеливаетесь. Следует сделать одно важное замечание: поскольку элементы HTML не учитывают разрывы строк как фактические разрывы строк в своем текстовом содержимом, вы, вероятно, захотите включить быстрое регулярное выражение, чтобы заменить все разрывы строк тегами <br>
, и другое регулярное выражение для замены каждого экземпляра нескольких пробелов несколькими пробелами
для сохранения нескольких пробелов.
В качестве альтернативы, если вы хотите избежать замены какого-либо регулярного выражения, вы можете просто применить свойство CSS white-space: pre;
к любому элементу, в который вы выводите текст, и он будет учитывать любой переданный ему интервал, будь то разрывы строк или множественные пробелы между словами.
1. Вот пример (с регулярным выражением) :
const textarea = document.querySelector('textarea');
const div = document.querySelector('div');
textarea.addEventListener('input', function(e) {
div.innerHTML = e.target.value.replace(/(?:\r\n|\r|\n)/g, '<br>').replace(/ +/g, m => " " + Array(m.length).join(' '));
});
html {
height: 100%;
margin: 0;
padding: 0;
border: 0;
box-sizing: border-box;
}
body {
display: flex;
align-items: center;
justify-content: space-between;
overflow: hidden;
margin: 0;
padding: 20px;
height: inherit;
box-sizing: border-box;
}
body > * {
position: relative;
-webkit-appearance: none;
width: calc(50% - 10px);
height: 100%;
padding: 20px;
border-width: 0;
background-color: #ccc;
box-sizing: border-box;
}
<textarea></textarea>
<div></div>
Интерактивный пример CodePen: https://codepen.io/brandonmcconnell/pen/2177e440bb55f5a7f035ebcd315a1bdf
2. Вот тот же пример (с white-space: pre;
, без регулярного выражения) :
const textarea = document.querySelector('textarea');
const div = document.querySelector('div');
textarea.addEventListener('input', function(e) {
div.innerHTML = e.target.value;
});
html {
height: 100%;
margin: 0;
padding: 0;
border: 0;
box-sizing: border-box;
}
body {
display: flex;
align-items: center;
justify-content: space-between;
overflow: hidden;
margin: 0;
padding: 20px;
height: inherit;
box-sizing: border-box;
}
body > * {
position: relative;
-webkit-appearance: none;
width: calc(50% - 10px);
height: 100%;
padding: 20px;
border-width: 0;
background-color: #ccc;
box-sizing: border-box;
}
div {
white-space: pre;
}
<textarea></textarea>
<div></div>
Интерактивный пример CodePen: https://codepen.io/brandonmcconnell/pen/0be96bb4ec0168deda587328180cca86