我实现了一个自动扩展textarea当用户按ENTER键和最小scrollHeight大小后自动扩展textarea。Textarea自动调整大小在每个按键上调整大小铬
它适用于IE,Firefox和Opera,但不适用于Chrome。
在Chrome中textarea的是在任何按键调整(只进不出),因为当设置e.style.height也改变scrollHeight属性(这种情况不会发生在其他浏览器发生。
我打上了问题的行评论:
function resize(e)
{
e = e.target || e;
var $e = $(e);
console.log('scrollHeight:'+e.scrollHeight);
console.log('style.height:'+e.style.height);
var h = Math.min(e.scrollHeight, $e.data('textexp-max'));
h = Math.max(h, $e.data('textexp-min'));
if($e.data('h')!=h)
{
e.style.height = "";
e.style.height = h + "px"; //this changes the scrollHeight even if style.height is smaller thatn scrollHeight
//e.style.overflow = (e.scrollHeight > h ? "auto" : "hidden");
$e.data('h',h);
}
return true;
}
在这里,你会发现全码:http://jsfiddle.net/NzTYd/9/
UPDATE
我发现,当我在消防更新e.style.height
狐狸/ IE /歌剧,e.scrollHeight
被更新为完全相同的值:
实施例: 设置80px到e.style.height
,设置为80pxe.scrollHeight
然而,Chrome更新e.scrollHeight
具有较高的值(4像素以上) 。
实施例:: 设置80px到e.style.height
,设置为84pxe.scrollHeight
这导致针对其接收EVERY按键生长4像素一个textarea!
该链接显示了实现一个文本扩展不同的方法,但没有一个类似地雷。 –
我更新了我的问题,以更好地描述主要问题 –