下面是一个用jQuery编写的简单文本区脚本,它扩展每个文本区以适应用户键入的内容。
$(document).ready(function() {
$('textarea').keyup(function() {
var addin = 0;
var txtheight = $(this).scrollTop();
if(txtheight > 0){ addin = 4; }
$(this).height(($(this).height() + txtheight + addin));
});
$('textarea').keyup();
});问题是,如果文本区域的初始内容大于一行,文本区域不会扩展以适应加载的内容,因为无法计算滚动位置。
有没有什么办法来解决这个问题。
发布于 2012-09-06 01:57:29
你为什么不试一下这个插件呢?
http://www.jacklmoore.com/autosize
发布于 2012-09-06 02:00:32
您可以尝试执行以下操作
$(document).ready(function() {
$('textarea').each(function() {
var addin = 0;
var txtheight = $(this).prop("scrollHeight") - $(this).height();
if(txtheight > 0){ addin = 4; }
$(this).height(($(this).height() + txtheight + addin));
});
$('textarea').keyup(function() {
var addin = 0;
var txtheight = $(this).scrollTop();
if(txtheight > 0){ addin = 4; }
$(this).height(($(this).height() + txtheight + addin));
});
$('textarea').keyup();
});然而,滚动高度不支持任何比它看起来更小的IE8。
发布于 2012-09-06 02:26:55
$('textarea').each(function() {
$(this).height($(this).prop('scrollHeight'));
});
$('textarea').keyup(function() {
var addin = 0;
var txtheight = $(this).scrollTop();
if(txtheight > 0){ addin = 4; }
$(this).height(($(this).height() + txtheight + addin));
});如丹尼所述,正确使用'scrollHeight'。
https://stackoverflow.com/questions/12286996
复制相似问题