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

时间:2010-07-04 01:10:09

标签: jquery

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

这是plugin in question

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

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

修改

在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>

相关的CSS:

textarea {
    width: 100%;
    font-family: Arial, simsun;
    font-size: 16px;
}

3 个答案:

答案 0 :(得分:1)

我不确定插件是如何工作的,但这可能是一个改变生活的解决方案。

将textarea设置为自动增长后,动态地将字符添加到textarea,以便触发插件,然后删除该字符。或者你可能需要模拟一个按键。

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

答案 1 :(得分:1)

您可以在布局完成时进行此操作:

$(document).ready(function() {
   // Code to run once document is ready
});

或者您可以使用速记符号,它完全相同:

$(function(){
   // Code to run once document is ready
});

将它包装在这两行中,它应该可以工作。

答案 2 :(得分:1)

我想我找到了你的问题......你需要在textarea中定义行和列:

<textarea rows="5" cols="40" 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>

没有这些设置,我的默认列宽和默认行高为-1。

此外,您必须从CSS中删除width: 100%,因为它会破坏功能


好吧,因为我有强迫症,我重写了插件(demo)。

现在应该根据其父级的宽度向textarea添加近似数量的cols(当textarea css宽度为100%时,它最有效)。只需从演示的左侧复制脚本并将其保存为文件,按如下方式调用:

$(document).ready(function(){
  $("textarea").autoGrow(true);
});

并确保textarea宽度也是100%...基本CSS:

textarea {
 width: 100%;
 height: auto;
 overflow: hidden;
 font-family: Arial, simsun;
 font-size: 16px;
}

如果你发现任何问题,请告诉我。