我有一个包含数据表的简单页面。如果用户输入如下字符:&lt; &GT; &#34; &#39; &安培; ,他们出来< > " ' &
。
我想实现一个jQuery解决方案,将文本< > " ' &
替换为正确的字符。我有一个名为#reload_me的容器表,里面有我在其他子表中的所有数据。
我尝试使用以下代码作为示例,但它似乎不起作用。我收到错误TypeError: $(...).replaceText is not a function
。我做错了什么?
$("#reload_me").replaceText("&", "&" );
答案 0 :(得分:1)
我不确定.replaceText
来自何处,但您看到的那些值是字符的ASCII值。如果您的字符当前显示的ASCII表示可见,那么这意味着显示ASCII值的文本是TEXT而不是HTML,因为HTML将呈现所需的字符表示。因此,使用jQuery的.html
方法替换目标元素的内容应该会使字符正确显示:
var $reloadMe = $("#reload_me");
$reloadMe.html($reloadMe.text());
以下是完整的工作样本:
var sample = "data data data < > " ' &";
var $td = $("td");
$td.text(sample);
$("#btnFixIt").on("click", function() {
$td.each(function() {
var $this = $(this);
$this.html($this.text());
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table border="1">
<tr>
<th>1st record table</th>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
<br />
<br />
<table border="1">
<tr>
<th>2nd record table</th>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
<br />
<br />
<table border="1">
<tr>
<th>3rd record table</th>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
<br />
<button type="button" id="btnFixIt">Fix it</button>
&#13;
答案 1 :(得分:0)
也许你的问题似乎与下一个引用
有关注意:如果&lt; DIV&GT; ,&lt;跨度&GT;或者&lt; NOEMBED&GT;节点具有包括字符(&amp;),(&lt;)或(&gt;)的子文本节点,innerHTML分别将这些字符返回为&amp; amp,&amp; lt和&amp; gt。使用element.textContent来获取这些文本节点的正确副本。内容。
答案 2 :(得分:0)
我最后按照本指南http://logicflowau.blogspot.ca/2009/08/sharepoint-xslt-data-view-issues_1789.html修正了我的问题。这是一个Sahrepoint修复而不是Jquery修复。
Add this function to your DispForm.aspx file:
<xsl:template name="formatMultiLineText">
<xsl:param name="text" select="."/>
<xsl:choose>
<xsl:when test="contains($text, '
')">
<xsl:value-of select="substring-before($text, '
')" disable-output-escaping="yes"/>
<br/>
<xsl:call-template name="formatMultiLineText">
<xsl:with-param name="text" select="substring-after($text,'
')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text" disable-output-escaping="yes"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Where your multiple line text is displaying, replace this:
<xsl:value-of select="@Description">
with this:
<xsl:call-template name="formatMultiLineText">
<xsl:with-param name="text" select="@Description">
</xsl:call-template>