自动调整textarea无焦点

时间:2015-11-17 13:02:24

标签: javascript jquery html

目前我有以下代码用于自动调整我的textarea:

$('textarea').bind('input propertychange', function() {
    $(this).height(50).height(Math.min(370, this.scrollHeight));
});

当我在textarea中时,这可以正常工作,并通过按某些键来更改文本。

我需要的是在使用JavaScript设置区域文本时以及当textarea没有聚焦时也可以这样做。只在回调中执行相同的代码(当然有正确的范围)不起作用 - 高度变为零。

4 个答案:

答案 0 :(得分:0)

您可以尝试触发事件

$('textarea').on('input propertychange', function() {
    $(this).height(50).height(Math.min(370, this.scrollHeight));
});
$('textarea').trigger('propertychange');

//如果您使用html()更改textarea内容或追加,您可以尝试类似的东西 $(' textarea的')HTML(somecontent写入); $(' textarea的&#39)。高度($(' textarea的'。)scrollHeight属性);

答案 1 :(得分:0)

执行回调函数后,触发propertychange函数

$('textarea').trigger('propertychange');

答案 2 :(得分:0)

使用changetrigger



$("#i").on('change', function(){
  this.style.color = 'red';
  });
function f(){
  $('#i').trigger('change');
  }

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="i" value="hello" /><br>
<button onclick="f()">Run</button>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

我的jquery解决方案是:

$(document).ready(function(){
    $("textarea").each(function(){
        $(this).height(($(this)[0].scrollHeight) + "px");
    });
    $("textarea").keypress(function(){
        $(this).height(($(this)[0].scrollHeight) + "px");
    });
})

JSFiddle