6

我想向文本字段发送一些 html 特殊字符,然后使用 javascript 将其恢复为原始格式:就像我发送“&pi”一样,它会在文本输入中显示“π”,当我使用 javascript把它拿回来,我应该得到“&pi”,但我只能得到“π”,而不是“&pi”。请帮忙,我的代码如下:

<script type="text/javascript"> 
function qpush(a) {
    document.getElementById('input').value += a;
}

function show(a) {
    alert(document.getElementById('input').value);
}
</script>

<input type="text" id="input" />
<input type="button" onclick="qpush('&pi;');" value="&pi;" />
<input type="button" onclick="show()" value="go" />
4

3 回答 3

3

根据您的需要,您可以执行以下 3 个选项之一:

  1. 使用 javascript 转义和 unescape 函数:

    var escaped = escape('π') // escaped = "%u03C0" 哪个 unescape 会变回 π

  2. 如果您有可用的 jQuery,它的 html 方法可能会成功:

    $('输入').val().html()

  3. 这是一个技巧,但会起作用:以您希望在输入元素的“数据-”属性上返回的值的方式保存值的副本,这将在 html5 中验证并且不会在其他文档类型中中断。

    document.getElementById('input').setAttribute('data-originalValue', '&pi')

于 2012-07-17T08:45:40.663 回答
1

value属性将为您提供文本,而不是 HTML。

您可以尝试getAttribute('value'),但由于&pi;π在 HTML 中完全相同,因此浏览器也完全可以免费返回π

一旦 HTML 被转换为 DOM,就无法访​​问原始 HTML(除非使用 XHR 再次下载 HTML 并自己解析它的原始文本)。

如果您希望数据是,"&pi;"那么它的 HTML 必须是&amp;pi;.

如果你想要那个和按钮上的渲染,π那么你需要:

<button type="button" value="&amp;pi;">π</button>

(请记住旧 IE 对按钮元素的各种错误)

当然,这将&pi;在您将值复制到文本输入时显示。

于 2012-07-17T08:11:39.143 回答
-1

使用它来替换所有出现的字符:

document.getElementById('input').value.replace(/π/g,"&pi;");
于 2012-07-17T08:22:09.087 回答