答案 0 :(得分:0)
在textarea值中,换行符标有EOL字符(/ r,/ n或/ r / n)。这些字符对HTML没有任何视觉影响(仅在源代码中)。您想要的是通过将其替换为<br/>
或<p></p>
您最好的选择是在显示文字时替换这些字符,这样一来,如果用户修改了评论,您的用户就不会看到这些标记。
当文本被单个或双星号(*)包围时,有一些更多选项,如添加<b></b>
和<i></i>
会给你一个相当接近的stackoverflow格式,它确实使用textarea不同你相信。
另外,当使用简单的textarea时,你可能想看降价,你可以提供降价支持(这与我们在这里格式化文本的方式非常接近),这样一些人甚至不需要( re)学习如何在您的网站上格式化他们的文本,因为它与其他网站/工具相同。
EDIT2:
以下是4个样式应用程序的快速/基本实现:单行换行,双行换行到段落,双星号表示粗体,单个星号表示斜体。
$("#editor").on('keyup', function(e) {
var input = $(e.target).val();
input = input.replace(/[\n]{2}/, '</p><p>');
input = input.replace(/[\n]{1}/, '<br/>');
input = input.replace(/\*\*(.+)\*\*/, '<strong>$1</strong>');
input = input.replace(/\*(.+)\*/, '<em>$1</em>');
$('#result').html('<p>' + input + '</p>');
});
&#13;
#result {
border: 1px solid #777;
background-color: #CCC;
}
#editor{
width:100%;
height:100px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="editor">
</textarea>
<div id="result">
</div>
&#13;
答案 1 :(得分:0)
让我们说清楚一些事情。 textarea就是这样;一个“文本区域”。它包含纯文本,并且为了记录,textarea保留换行符。但你是对的;除此之外它没有任何功能。没有样式,它不会自动插入段落标签,或者具有您正在寻找的任何其他高级功能。
听起来像你正在寻找一个基于网络的WYSIWYG(你看到的是你得到的)编辑器。提供简单功能的东西,如粗体文本,缩进/文本对齐按钮等等。最受欢迎/最着名的两个是CK Editor和Tiny MCE,它们都使用Javascript来运行: https://ckeditor.com/ https://www.tinymce.com/
TinyMCE是最简单的。他们有自己的图书馆CDN所以你要做的就是复制并粘贴几行代码以使其工作。两个库都附带免费和高级插件,提供图像上传等高级功能。
你的第二种方法;从HTML 5开始,HTML元素现在可以使用 contenteditable 属性,该属性允许网页中的HTML内容变得可编辑。您可以创建div /元素并操纵这些元素以具有样式。这种方法有一些缺陷,最大的问题是旧浏览器的兼容性,其次是将数据发布到其他网页,这迫使使用Javascript将HTML元素的内容复制到隐藏的输入或文本区域。
这个人(我相信来自这个网站)开发了一个有用的WYSIWYG编辑器,用于实现可信的方法: http://habibhadi.com/lab/easyeditor/
答案 2 :(得分:0)
如果您需要高级格式设置,例如<em>
和<strong>
,则您需要使用启用了contenteditable
属性的元素(很可能是<div>
) 。例如:
<div contenteditable><em>Hello</em> <strong>world</strong></div>
要创建允许用户格式化文本的用户界面,请参阅: