JQueryでkeyup()
を使用して簡単な効果を作成しようとしています。ユーザーがtextarea
に入力すると、ユーザーが入力したテキストが.content
という名前の別のdivにコピーされるようにしたいだけです。押すと enter textareaで新しい行が作成されますが、私のdivではテキストが同じ行に表示されています。私のコードは以下にあります、またはここでデモを見ることができます: http://jsfiddle.net/Pqygp/
$('.content:not(.focus)').keyup(function(){
var value = $(this).val();
var contentAttr = $(this).attr('name');
$('.'+contentAttr+'').html(value);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea name="mas" rows="15" class="content"></textarea>
<p> </p>
<div class="mas" >Texts Comes here</div>
DIVで適切に出力するには、リテラル改行を<br>
タグに変換する必要があります。
$('.'+contentAttr+'').html(value.replace(/\r?\n/g,'<br/>'));
以下のコードに示されています:
$('.content:not(.focus)').keyup(function(){
var value = $(this).val();
var contentAttr = $(this).attr('name');
$('.'+contentAttr+'').html(value.replace(/\r?\n/g,'<br/>')); //convert newlines into <br> tags
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <textarea name="mas" rows="15" class="content"></textarea> <p> </p> <div class="mas" >Texts Comes here</div>
white-space: pre-wrap
ルールをdivのCSSに追加します。
.mas {
white-space: pre-wrap;
}
次の行を使用します: Fiddle
$('.'+contentAttr+'').html(value.replace(/\n/g,"<br>"));
問題は、改行がhtmlに改行を作成しないことでしたが、<br>
意志。
次のようにしてみてください
var value = $(this).();
var contentAttr = $(this).attr('name');
$('.'+contentAttr+'').html(value.replace(/\r?\n/g,"<br>"));
これは [〜#〜]デモ[〜#〜]
Reactを使用する場合:
render() {
const nbOfTextareaRows = this.state.textareaValue.split('\n').length;
return (
<textarea
value={this.state.textareaValue}
onChange={e => this.setState({ textareaValue: e.target.value })}
rows={nbOfTextareaRows}
/>
);
}