我想在jQuery中使用keyup()
来做一个简单的效果。我只是希望当用户输入textarea
时,那么用户类型将复制到另一个名为.content
的div的文本。当我在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>
答案 0 :(得分:34)
在div的CSS中添加white-space: pre-wrap
规则。
.mas {
white-space: pre-wrap;
}
答案 1 :(得分:16)
您需要将文字换行符转换为<br>
标记,以便在DIV中输出正确的内容。
$('.'+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
});
&#13;
<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>
&#13;
答案 2 :(得分:5)
使用以下行:Fiddle
$('.'+contentAttr+'').html(value.replace(/\n/g,"<br>"));
问题是换行不会在html中创建换行符,但<br>
会出现换行符。
答案 3 :(得分:1)
尝试
var value = $(this).();
var contentAttr = $(this).attr('name');
$('.'+contentAttr+'').html(value.replace(/\r?\n/g,"<br>"));
这是DEMO
答案 4 :(得分:0)
如果您使用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}
/>
);
}