在 <textarea> 中格式化文本?

Posted

技术标签:

【中文标题】在 <textarea> 中格式化文本?【英文标题】:Format text in a <textarea>? 【发布时间】:2012-10-01 14:50:23 【问题描述】:

文本区域非常棒,因为它有一些内置功能(滚动条)。如何在&lt;textarea&gt; 内格式化&lt;spans&gt; 的文本?

【问题讨论】:

【参考方案1】:

如果您需要自定义 textarea,请使用具有 contenteditable 属性的另一个元素(如 DIV)重现其行为。

它更可定制,也更现代,textarea 仅适用于纯文本内容,而不适用于丰富的内容。

<div id='fake_textarea' contenteditable></div>

滚动条可以通过 CSS 溢出属性来重现。

您可以在表单中正常使用这个假文本区域,即:如果您必须通过 POST 方法提交其内容,您可以执行类似(使用 jQuery)的操作:

<input type='hidden' id='fake_textarea_content' name='foobar' />

...

$('#your_form').submit(function()

  $('#fake_textarea_content').val($('#fake_textarea').html());
);

【讨论】:

contenteditable 并不是所有的点和彩虹。这篇文章是一篇很棒的读物,我希望在尝试在我的一些项目中使用 contenteditable 之前看到它:medium.com/content-uneditable/…。看起来很好,但它有很大的缺陷。【参考方案2】:

您不能单独设置文本区域内容的样式,您必须使用&lt;div&gt;s 或类似的东西。

你想要这样的东西吗:?

http://jsfiddle.net/mekwall/XNkDx/

$('.editable').each(function()
    this.contentEditable = true;
);

这允许您编辑 div 的内容,它仍然看起来像一个 textarea,

现在可以使用粗体了。

【讨论】:

http://jsfiddle.net/XNkDx/2199/ 我只是添加了几行代码来向您展示它是如何真正起作用的。而且,我的朋友,为你 +1,不错的小脚本 ...我说一个问题是它自己的副本。怎么没人注意到?【参考方案3】:

您不能在 TEXTAREA 中使用 HTML。

通过添加overflow: auto 和固定width 和/或height,可以将滚动应用于任何元素。

【讨论】:

【参考方案4】:

您可以使用 CKEditor 等网页 html 编辑器来格式化文本区域中的数据。检查这个http://ckeditor.com/

【讨论】:

【参考方案5】:

另一种提交“假”文本区域的方法是在表单标签中包含以下行

<form onsubmit=" $('#fake_textarea_content').val($('#fake_textarea').html());">
</form>

【讨论】:

我认为您在回答中遗漏了一些内容。 uppsss.. 修复它。干杯!

以上是关于在 <textarea> 中格式化文本?的主要内容,如果未能解决你的问题,请参考以下文章

textarea中的HTML格式文本[重复]

Javascript选择文本并格式化textarea

如何将 textarea 的格式化文本传递给其他 php 页面?

正确显示textarea中输入的回车和空格

我想要在 TextArea 中以相同格式输入的文本

HTML格式化标签文本区域自动聚焦按钮:fontpretextarealabelbutton