jquery自动生成文本区域与初始文本

bma*_*ies 5 jquery

有一个非常简单的jquery插件:autotextarea.我想教一个小技巧:最初调整大小以补偿表单中提供的文本,而不是等待第一次击键.有些灵魂请告诉我除了onkeyup之外还要添加哪种处理程序?

这是有问题插件.

只是添加一个调用grow(this)到初始化函数是行不通的 - 显然,在调用时,布局不完整,有效宽度很小,所以它们太高了.这是我的修改版本:唯一的变化就是调用grow.

//Public Method
jQuery.fn.autoGrow = function(){
    return this.each(function(){
        setDefaultValues(this);
        grow(this);
        bindEvents(this);
    });
};
Run Code Online (Sandbox Code Playgroud)

编辑:

在document.ready()上运行它不起作用,因为尚未计算textarea的cols属性.但是,我想出了一些东西,也许你可以帮我清理一下.cols我没有注意,而是使用$(txtArea).width(),然后将其除以包含典型字符的隐藏div的宽度.一切都很好,除了需要将隐藏的div放在每一页上.有什么建议制造或避免该div?

典型文本区域HTML:

<textarea name="text[0]">?? ?? ?? ?? ??? ??? ?? : ?? ?? ? ?? ? ?? ?? : ??? ? ?? ?? ( ??? ) 09 : 00~ 13 : 30 ?? : ??? ?? ? ?? ? ? CR 403 ( ??? ??? ? ? 160 ? ) ?? ?? : ?? ?? ?? ?? ( European Union Research Forum , EURF ) ?? ?? ?? ?? ?? ?? ?? ?? ?? ??09 : 00 -09 : 10 ? ? 09 :10 -09 : 20 ?? ??? ( ?? ?? ?? ? ) 9 : 20 - 10 : 20 ?? ? : ?? ?? ? ? ?? ??? ?? ( ???? ) ??? 1. </textarea>
Run Code Online (Sandbox Code Playgroud)

和相关的CSS:

textarea {
    width: 100%;
    font-family: Arial, simsun;
    font-size: 16px;
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*ore 1

我不确定该插件到底是如何工作的,但这可能是一个临时解决方案。

将文本区域设置为自动增长后,动态向文本区域添加一个字符,以便触发插件,然后删除该字符。或者您可能需要模拟按键,两者之一。

如果您需要代码示例,请告诉我。