换行符和回车符......必须是编码中最复杂的部分。 (对我来说)
将此代码放在一个页面中(来自存储为This from Ricardo\nAnd also a test\nRent 3000.00
的数据库):
<td title="This from Ricard
And also a test
Rent 3000.00" style="width:198px;text-align:left">....</td>
然后使用它来获取带有'hidden'\ n的
的title属性var v = $('#'+i).parent().attr('title'); // i = id of <span> child of <td>
一路上,换行符丢失并将变量v用于文本输入框:
This from RicardAnd also a testRent 3000.00
如何保留\n's
并将其外观改为如下所示?
答案 0 :(得分:14)
换行符仍然存在,只是浏览器尝试渲染它们。
如果您仍想查看“\ n”,请尝试以下操作:
var v = $('td:first-of-type').attr('title').replace(/\n/g, "\\n");
否则,如果你想要的不是看到“\ n”而是看到换行符,你可以这样做:
var v = $('td:first-of-type').attr('title').replace(/\n/g, "<br/>");
选中此JSBin
答案 1 :(得分:2)
您可以使用javascript全局方法escape()
对字符串v进行编码,并使用unescape()对其进行解码以供使用。
这是你的小提琴
在您的代码中,此行可以像这样
var v = escape($('#'+i).parent().attr('title'));
答案 2 :(得分:1)
好吧,如果您将字符串放入文本输入框,则不会有新行,因为文本输入框是仅限单行文本。 < / p>
\n
就在那里 - 您可以尝试通过它们进行拆分:
lines = str.split("\n")
答案 3 :(得分:0)
这个问题让我很好奇,所以我必须查看来源:http://www.w3.org/TR/html401/struct/global.html#adef-title
W3C对属性中各种形式的空白处理方式完全保持沉默,因此我强制假设它遵循与HTML相同的规则。
在HTML下,除非在<PRE>
元素或类似CSS
规则下,否则所有空格都会折叠到单个空格进行渲染。
因此:
<p>The quick brown
fox
jumped
over the
lazy dog</p>
与以下内容相同:
<p>The quick brown fox jumped over the lazy dog</p>
此HTML行为与用户代理(浏览器)可能以任何方式呈现TITLE
属性的事实相结合,使得大多数(如果不是全部)此类代理可能没有理由保留结束行标记(carriage return
和newline
或\r\n
)。
编辑:
如果格式很重要,title
文本可以转义并放入data-*
元素中。使用鼠标悬停,自定义弹出框可以显示格式化的HTML。
编辑2 - 取自原始问题:
<td data-title="This from Ricard<br><br>And also a test<br>Rent 3000.00"
style="width:198px;text-align:left">
....
</td>
您可以在此处详细了解data-*
属性:http://www.javascriptkit.com/dhtmltutors/customattributes.shtml
简而言之,在某些mouseover
代码中,您可以找到以下文字:
var mytitle = <element>.getAttribute("data-title");
然后使用弹出式div显示mytitle
答案 4 :(得分:0)
您需要直接从数据库中读取此内容。在为站点生成HTML时,将解释行结尾,这就是您在代码中看到多行td元素的原因。
当你去引用那个td元素时,它会在一行中吐出值。一旦这些数据丢失,您就无法以任何方式重新创建它。
答案 5 :(得分:0)
根据HTML规范,所有换行符都应该“转义”,即

重放