我有一个textarea,它是在成功的AJAX调用之后创建的。它可能包含相当多的文本,我希望它的高度可以自动设置,以便整个文本在不滚动的情况下可见。
我正在使用autoResize插件(http://james.padolsey.com/javascript/jquery-plugin-autoresize/),但它仅在用户输入时调整输入大小。
那么,我如何调整textarea的大小以使其适合它包含的文本?
以下是相关函数的代码(var类型可以是'input'或'textarea')
function edit_create_input(name, value, type, autocomplete, autoresize)
{
var input=$('<' + type + ' class="edit-"' + name + ' name="'+name+'">').val(value);
if (autocomplete)
{
input.autocomplete("ajax.autosuggest.php",{'multiple':true});
}
if (autoresize)
{
input.autoResize();
}
return input;
答案 0 :(得分:3)
在 plugin source 中有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()
(这也很好)会触发每个更改事件绑定到对象,而不仅仅是你需要的对象。
更新:旧的插件源不再可用,我只能找到原始here的略微修改版本。