Javascript 将文本区域宽度调整到文本的最长行
如何在用户键入时使文本区域增加其宽度。基本上,我需要文本区域的宽度仅为最长行的长度 这就是我想到的。但当用户点击ENTER时,宽度仍然会增加。如何使textarea只适合其文本的大小Javascript 将文本区域宽度调整到文本的最长行,javascript,jquery,html,css,Javascript,Jquery,Html,Css,如何在用户键入时使文本区域增加其宽度。基本上,我需要文本区域的宽度仅为最长行的长度 这就是我想到的。但当用户点击ENTER时,宽度仍然会增加。如何使textarea只适合其文本的大小 $(document).on("click blur keyup", ".fT", function() { var newWidth = ($('#tfd').val().length)*10; $('#tfd').width(newWidth); }); 正如@progrAmmar提到
$(document).on("click blur keyup", ".fT", function() {
var newWidth = ($('#tfd').val().length)*10;
$('#tfd').width(newWidth);
});
正如@progrAmmar提到的,
$('#tfd').val().length
测量文本的总长度,而不是最长行的宽度
事实上,您的newWidth
只是一个近似值,如果用户键入非ASCII字符,则根本不正确
一种近似长度的方法是将pre
元素放置在某个位置,将可见性:hidden
和font size
和font-family
设置为与文本区域相同,并在用户键入时使用新内容更新此元素
通过测量此
pre
元素的宽度,可以获得文本的良好近似值。不能使用$('#tfd').val().length,因为它将计算整个文本的值(不是一行)。您需要检查textarea值中的“\n”,并将所有以\n结尾的文本组成一个数组,并确定最长的文本then@progrAmmar:谢谢。像if(keycode='13'){
?是的,您可以使用该代码,这意味着您要在每次按enter键时检查最大的一行。即使这样,您也必须在每次按enter键时查找最大的一行。谢谢。难道没有css规则可以使用jQuery中的keyup()来刷新以调整其宽度吗?