我想隐藏文本区域的边框,让用户感觉他们正在无限空间中输入。
(当新行开始时,文本区域的高度应该增加一行的高度)
我猜测的一种方法是:在每个按键操作后将所有文本复制到一个具有相同宽度的 div 中,然后测量该 div 的高度,接着将该 div 的高度设置为文本区域的高度。
我注意到的一个问题是滚动条宽度应该从主要宽度中减去,并且在不同的设备上,我们有 0 到 16 像素的可变滚动条宽度... 有什么建议吗?
我想隐藏文本区域的边框,让用户感觉他们正在无限空间中输入。
(当新行开始时,文本区域的高度应该增加一行的高度)
我猜测的一种方法是:在每个按键操作后将所有文本复制到一个具有相同宽度的 div 中,然后测量该 div 的高度,接着将该 div 的高度设置为文本区域的高度。
我注意到的一个问题是滚动条宽度应该从主要宽度中减去,并且在不同的设备上,我们有 0 到 16 像素的可变滚动条宽度... 有什么建议吗?
这是你想要的内容 首先:HTML中有一个文本区域,其ID为:ta
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea rows="10" cols="10" id="ta">
</textarea>
$('#ta').keypress( function(){
var rows=$('#ta').attr('rows');
var text=$('#ta').val();
var lines=text.split('\n');
if(lines.length==rows){
rows++;
$('#ta').attr('rows',rows);
}
});
这个 CSS 只是为了隐藏文本区域的边框,让用户感觉自己在页面上写作。
#ta{
border: 0;
}
你可以轻松地使用elastic.js来实现你所尝试的内容,这是一个简单的一行代码解决方案。
$('#note').elastic();
textarea#note {
width:100%;
display:block;
resize: none;
border: none;
}
textarea:focus {
outline: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://jquery-elastic.googlecode.com/svn-history/r37/trunk/jquery.elastic.js"></script>
<textarea id="note">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.</textarea>