如果我使用带有属性 contentEditable =“true”
的 div 代替 textarea 作为文本字段,是否会自讨苦吃?
如果我使用带有属性 contentEditable =“true”
的 div 代替 textarea 作为文本字段,是否会自讨苦吃?
它会很好地工作,但与表单相比,它会稍微困难一些,因为您将不得不连接自己的逻辑来使按钮的点击事件追踪正确的div,获取其内容,然后执行提交。文本框的优点是浏览器会为您处理所有这些。
Gmail
的邮件编辑框也是一个带有contenteditable="true"
属性的div
。它最大的好处是随着用户输入文本/内容自动调整高度。此外,它还支持内部的富文本。如果需要,您可以设置最大高度来模仿Textarea
。
另一方面,如果你想要Textarea
的自动高度,你可能需要使用js将一些监听器绑定到oninput
钩子上。
它们并不是同一件事。首先,从语义上讲,textarea 的目的是编写/编辑纯文本,而使用 contentEditable 可以编辑列表等(请参见:htmldemo)。 其次,行为也不同。例如,在 Chrome 中,当您测试下面的链接并删除所有内容时,您会失去焦点(div 元素消失),这不是预期的行为,或者如果是,那就是愚蠢的。
contenteditable="true"
的