如何使用javascript在文本输入中获取html特殊字符

时间:2012-07-17 08:06:10

标签: javascript html escaping special-characters htmlspecialchars

我想将一些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" />

3 个答案:

答案 0 :(得分:3)

根据您的需要,您可以选择以下三个选项之一:

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

    var escaped = escape('π')// escaped =“%u03C0”,其中unescape将变回π

  2. 如果你有jQuery可用,它的html方法可能会起到作用:

    $( '输入')。VAL()。HTML()

  3. 这是一个hack但是会起作用:在输入元素的'data-'属性上保存您希望它返回的值的副本,这将在html5中验证并且不会在其他中断文档类型。

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

答案 1 :(得分:1)

value属性会为您提供文字,而不是HTML。

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

一旦将HTML转换为DOM,就无法访​​问原始HTML(不能再使用XHR下载HTML并自行解析原始文本)。

如果您希望数据为"&pi;",则其中的HTML必须为&amp;pi;

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

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

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

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

答案 2 :(得分:-1)

用它来替换所有出现的角色:

document.getElementById('input').value.replace(/π/g,"&pi;");