我想为用户提供resizing textarea控件.我已经给了这个去看看其他一些实现,但我似乎找不到满足我所有要求的实现.具体来说,我想要一个控件:
当页面以标准兼容模式(即不在怪异模式下)呈现时,可在Windows上的IE6,IE7,IE8以及Windows和OS X上的Firefox 3和3.5中使用.
不会搞乱undo buffer/undo stack.IE是一个特别令人讨厌的问题 - 添加节点,删除节点和其他一些DOM操作将重置输入缓冲区,这意味着如果实现依赖于这些技术,则撤销将不会像在标准textarea控件中那样运行.除了这个说明,我还没有找到关于这个bug的更多信息.像jQuery Auto Growing Plugin这样的实现遇到了这个问题 - 尝试撤消IE中的更改并比较它如何工作到标准textarea.我添加了一个向JSBin演示此问题的示例页面.
具有最大高度,超过该高度,控件无法生长.
删除内容时适当缩小.
在按键上不闪烁或行为异常.例如,当控件超出初始大小时,jQuery Auto Growing Textarea控件的行为奇怪,至少是IE7.
不要求控件使用固定宽度/等宽字体.
我看到的最接近这种功能的是Facebook的状态更新字段,它是作为内容可编辑的div元素实现的,但我对使用这样的元素有一些保留,因为使用div意味着:
需要明确地设置边框样式,这意味着我们最终可能会得到一个看起来与原生textarea不同的边框.
需要与真正的textarea同步内容(可能在两个方向?).
在相对于textarea的位置放置提示和其他元素时添加复杂性.
虽然这种方法适用于Facebook状态更新,但它在包含数百个标准输入元素的表单中的效果如何?
我上面列出的内容代表了"最终调整文本区域" - 解决了我认为现有方法存在的问题.这样的控制存在吗?是否可以编写这样的控件?
查看DOJO工具文本区域控件
在此演示页面上查看更多信息(文本区域在表单末尾)
这非常符合您的要求.