我有一个在成功的 AJAX 调用后创建的文本区域。它可能包含相当多的文本,我希望自动设置它的高度,以便整个文本无需滚动即 cocoa 见。
我正在使用 autoResize 插件 (http://james.padolsey.com/javascript/jquery-plugin-autoresize/),但它仅根据用户输入调整输入大小。
那么,如何调整文本区域的大小以使其适合其包含的文本?
这是相关函数的代码(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;
最佳答案
在<罢工> 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()
(这也很好) ) 将触发绑定(bind)到对象的每个更改事件,而不仅仅是您需要的事件。
更新:旧的插件源不再可用,我只能找到原始版本 here 的稍微修改版本。 .
关于javascript - jQuery 在加载时自动调整预填充文本区域的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8267528/