﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-落Nicety的博客-随笔分类-css</title><link>http://www.blogjava.net/hunter129/category/29122.html</link><description>专注于web2.0</description><language>zh-cn</language><lastBuildDate>Mon, 12 Oct 2009 04:35:00 GMT</lastBuildDate><pubDate>Mon, 12 Oct 2009 04:35:00 GMT</pubDate><ttl>60</ttl><item><title>正确显示textarea中输入的回车和空格</title><link>http://www.blogjava.net/hunter129/archive/2008/10/09/233444.html</link><dc:creator>落Nicety</dc:creator><author>落Nicety</author><pubDate>Thu, 09 Oct 2008 13:19:00 GMT</pubDate><guid>http://www.blogjava.net/hunter129/archive/2008/10/09/233444.html</guid><wfw:comment>http://www.blogjava.net/hunter129/comments/233444.html</wfw:comment><comments>http://www.blogjava.net/hunter129/archive/2008/10/09/233444.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/hunter129/comments/commentRss/233444.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hunter129/services/trackbacks/233444.html</trackback:ping><description><![CDATA[&nbsp;
在textarea中输入的文本。如果含有回车或空格。在界面上显示的时候则不哪么正常。回车消失了，空格变短了。<br />
如何解决这个问题呢。有2种方法。<br />
1.使用&lt;pre&gt;标签<br />
&nbsp;&nbsp; w3c对pre元素是这样定义的：pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。<br />
&nbsp;&nbsp; 更详细的内容请参考 <a target="_blank" title="http://www.w3school.com.cn/tags/tag_pre.asp" href="http://www.w3school.com.cn/tags/tag_pre.asp">http://www.w3school.com.cn/tags/tag_pre.asp</a><br />
&nbsp;&nbsp; 也就是说包含在pre标签中的回车和空格会正常的显示出来。包括你在页面代码中输入的。所以如果使用pre元素你需要这样写：<br />
&nbsp;&nbsp; <br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">pre</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">要输出的文本</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">pre</span><span style="color: #0000ff;">&gt;</span></div>
&nbsp;&nbsp; ，而不是这样：<br />
&nbsp;&nbsp; <br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">pre</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;要输出的文本<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">pre</span><span style="color: #0000ff;">&gt;</span></div>
&nbsp;&nbsp; 后一种写法 文本前的空白也会被显示的。除非你真的希望这样:)<br />
2.对文本内容进行替换。<br />
&nbsp; 回车和空格不能正确显示，究其原因是他们各自的表示方式不同。在textarea里面输入的回车是字符"\r"，html中的回车(换行)是"&lt;br/&gt;"。<br />
&nbsp; textarea中输入的空格是空白" "，而html中的一个空格是"&amp;nbsp;"。理所当然不能正确显示。好了现在知道了原因就有了第二种解决方案了。<br />
&nbsp; 只要我们将输入的文本中相应的"元素"替换成html认识的就ok了。因此下面一行代码即可解决问题：<br />
&nbsp; <br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">"</span><span style="color: #000000;">要输出的文本</span><span style="color: #000000;">"</span><span style="color: #000000;">.replaceAll(</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">&amp;nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">).replaceAll(</span><span style="color: #000000;">"\</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">br</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);</span></div>
&nbsp; 等等。这里还有一点小问题。把一个空格替换成一个"&amp;nbsp;"空格看上去仍然要少些。如果你喜欢可以替换成2个。<br />
&nbsp; <br />
&nbsp; 最后，除了回车和空格以外还有很多空白字符如tab等，如果你喜欢可以一并处理了^_^<br />
&nbsp; <br />
&nbsp; 最后的最后，如果本来的文本是很长的一行，使用pre标签后就不会自动换行。结果页面出现横向滚动条。不知道有没有好的解决方法？<br />
&nbsp; 而将第二种方法处理过的文本放在&lt;p&gt;标签中显示，就可以显示正常。<br />
&nbsp; <br />
<img src ="http://www.blogjava.net/hunter129/aggbug/233444.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hunter129/" target="_blank">落Nicety</a> 2008-10-09 21:19 <a href="http://www.blogjava.net/hunter129/archive/2008/10/09/233444.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>