5

我正在使用除了 listmenu 之外的工作的 uniformjs 表单控件。当我在列表菜单中添加 '&' 符号 (&) 时,它会正确呈现,但是当我将值更改为不同的值并再次选择具有 & 符号的值时,它会&在列表中呈现为 '&' 符号菜单。 在此处输入图像描述

在此处输入图像描述

<select>
<option>Through &amp; Google</option>
<option>Through Twitter</option>
<option>Other&hellip;</option>         
<option>&lt;Hi&gt;</option>
</select>

http://uniformjs.com/#example

有人可以告诉我是什么问题..

4

3 回答 3

4

根据 Didler 的说法,为什么不稍微修改一下 uniformjs?

我最近遇到了同样的情况,感谢 Didler 指出确切的路线,这为我节省了大量时间来定位该地点。

就我而言,我有一个带有值的选择,其中包含特殊字符,例如:

<option>aaa</option>
<option><a>bbb<br>ddd<hr>ccc</option>

所以我将第 185 行的代码修改为:

spanTag.text(elem.find(":selected").text());

它解决了渲染值时形状正确的问题。

在 op 的场景中,我不确定您使用的是哪种服务器端语言,但肯定有一种方法可以在生成 html 页面之前转义选项中的文本,这样&amp;您的 html 中就没有,而是字符本身。我正在使用 Java,因此我可以简单地使用 JSTL<c:out value="${******}"/>将值放入选项标记中。

于 2012-02-29T03:01:34.560 回答
4

有一个拉取请求(130)更新了 4 行代码(第 173、185、212 和 569 行),以便.html()它们使用.text(). 我看到的两个后来的拉取请求似乎没有更新所有 4 行。

如果您还想更新缩小版,您可以搜索以下两个片段:

  • l.html(n.html()(x1 - 更改“h​​tml”的第二个实例)
  • :selected").html((x3 - 仅更改“html”的实例)
于 2012-07-13T15:30:10.390 回答
3

我认为问题可能来自这一行(source - line 185):

spanTag.text(elem.find(":selected").html());

如果您有以下html:

<select>
    <option>One &amp; Two</option>
    <option>One & Two</option>
</select>
  1. 插件获取内容作为htmlelem.find(":selected").html()

    两个选项元素在获取 html 时都会返回此值:One &amp; Two 特殊字符由 html 实体表示(在我们的示例中&amp;为 for )&

  2. 然后插件将此结果应用为文本使用spanTag.text(<html>);

    所以 html 实体不会被解析(&amp;显示为&amp;

这个小提琴说明了这一点。

我认为除了不使用特殊字符之外没有解决方案&...

于 2012-01-11T10:10:29.327 回答