Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将文本区域宽度调整到文本的最长行_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 将文本区域宽度调整到文本的最长行

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提到

如何在用户键入时使文本区域增加其宽度。基本上,我需要文本区域的宽度仅为最长行的长度

这就是我想到的。但当用户点击ENTER时,宽度仍然会增加。如何使textarea只适合其文本的大小

$(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()来刷新以调整其宽度吗?