我想为用户提供一个调整文本区域大小的控件。我试了一下并查看了许多其他实现,但似乎找不到满足我所有要求的实现。具体来说,我想要一个控件:
- 当页面以符合标准的模式(即不在 quirks 模式)呈现时,适用于 Windows 上的 IE6、IE7、IE8 以及 Windows 和 OS X 上的 Firefox 3 和 3.5。
- 不会弄乱撤消缓冲区/撤消堆栈。这是 IE 的一个特别讨厌的问题——添加节点、删除节点和一些其他 DOM 操作将重置输入缓冲区,这意味着如果实现依赖于这些技术,则撤消将不会像在标准文本区域控件中那样运行。除了 this note 之外,我找不到关于此错误的更多信息。 .类似 jQuery 的实现 Auto Growing Plugin遇到这个问题 - 尝试撤消 IE 中的更改并将其与标准文本区域的工作方式进行比较。我添加了一个 example page向 JSBin 演示这个问题。
- 具有控件不能增长的最大高度。
- 删除内容时适当缩小。
- 按键时不会闪烁或出现异常行为。例如jQuery Auto Growing Textarea 控件在超出其初始大小时至少在 IE7 中表现异常。
- 不要求控件使用固定宽度/等宽字体。
我见过的最接近这样工作的东西是 Facebook 的状态更新字段,它是作为内容可编辑的 div 元素实现的,但我对使用这样的元素有一些保留,因为使用 div 意味着:
- 需要明确设置边框样式,这意味着我们最终可能会得到一个看起来与原生文本区域不同的边框。
- 需要将内容与真实的文本区域同步(可能是双向的?)。
- 在相对于文本区域的位置放置提示和其他元素时增加了复杂性。
- 虽然这种方法适用于 Facebook 状态更新之类的东西,但它在包含数百个标准输入元素的表单中的效果如何?
我上面列出的内容代表“最终调整文本区域的大小”——解决我认为现有方法存在的问题。是否存在这样的控件?是否可以编写这样的控件?
最佳答案
关于javascript - 寻找最终调整大小的文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1586931/