Javascript jQuery在加载时自动调整预填充文本区域的大小
我有一个textarea,它是在成功的AJAX调用后创建的。它可能包含相当多的文本,我想它的高度自动设置,使整个文本将是可见的,而无需滚动 我正在使用自动调整大小插件(http://james.padolsey.com/javascript/jquery-plugin-autoresize/),但它仅根据用户输入调整输入大小 那么,如何调整文本区域的大小,使其适合包含的文本 以下是相关函数的代码(变量类型可以是“input”或“textarea”)Javascript jQuery在加载时自动调整预填充文本区域的大小,javascript,jquery,textarea,autoresize,Javascript,Jquery,Textarea,Autoresize,我有一个textarea,它是在成功的AJAX调用后创建的。它可能包含相当多的文本,我想它的高度自动设置,使整个文本将是可见的,而无需滚动 我正在使用自动调整大小插件(http://james.padolsey.com/javascript/jquery-plugin-autoresize/),但它仅根据用户输入调整输入大小 那么,如何调整文本区域的大小,使其适合包含的文本 以下是相关函数的代码(变量类型可以是“input”或“textarea”) 函数编辑\u创建\u输入(名称、值、类型、自动
函数编辑\u创建\u输入(名称、值、类型、自动完成、自动调整大小)
{
变量输入=$('').val(值);
如果(自动完成)
{
autocomplete(“ajax.autosuggest.php”,{'multiple':true});
}
如果(自动调整大小)
{
input.autoResize();
}
返回输入;
中有3个事件触发了updateSize()
函数:
// Bind namespaced handlers to appropriate events:
textarea
.unbind('.dynSiz')
.bind('keyup.dynSiz', updateSize)
.bind('keydown.dynSiz', updateSize)
.bind('change.dynSiz', updateSize);
在ajax加载内容后,您应该触发其中一个:
$("#my_textarea").trigger('change.dynSiz');
根据您的代码编辑:
// ...
if (autoresize)
{
input.autoResize();
input.trigger('change.dynSiz');
}
// ...
注意:将.trigger()
与命名空间事件一起使用更方便,因为使用.change()
(这也很好)将触发绑定到对象的每个更改事件,而不仅仅是您需要的事件
更新:旧的插件源代码不再可用,我只能找到一个稍微修改过的原始版本。你能给我们看看你当前的源代码吗?有时候,解决方案就摆在眼前。请记住这句话:“一张图片能表达千言万语。”也许是调整插件代码?代码很简单,也不是很长。我添加了代码的相关部分。不幸的是,我不太擅长JS和jQuery,所以现在修改插件代码对我来说有点太难了。这似乎不起作用。可能是因为元素当时实际上不在DOM中吗?编辑:不,即使我在添加元素后尝试此操作,它仍然不起作用。我尝试在JFIDLE中测试此操作,但根本无法使其起作用。插件主页上有一条注释(实际上是最后一条),其中有人想做你想做的事,他只使用
.keydown()
来触发事件。你能链接你的小提琴吗?我做到了!原来我们有不同的源代码(我有一个更新的,从)。它有不同的触发器,所以.trigger('change.autoResize'))
是为我做的!但是,我会的,这对我来说似乎有点像黑客,所以我会在接受这个答案之前等待其他答案。事实上,模拟用户事件比黑客更像是一个把戏,习惯它;)很高兴我能帮上忙!干杯!知道这个插件去了哪里吗?James Padolsey的github似乎没有,而且返回404。实际源代码为,但似乎是过时的版本。
// ...
if (autoresize)
{
input.autoResize();
input.trigger('change.dynSiz');
}
// ...