我想将一些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('π');" value="π" />
<input type="button" onclick="show()" value="go" />
答案 0 :(得分:3)
根据您的需要,您可以选择以下三个选项之一:
使用javascript转义和unescape函数:
var escaped = escape('π')// escaped =“%u03C0”,其中unescape将变回π
如果你有jQuery可用,它的html方法可能会起到作用:
$( '输入')。VAL()。HTML()
这是一个hack但是会起作用:在输入元素的'data-'属性上保存您希望它返回的值的副本,这将在html5中验证并且不会在其他中断文档类型。
document.getElementById('input')。setAttribute('data-originalValue','&amp; pi')
答案 1 :(得分:1)
value
属性会为您提供文字,而不是HTML。
您可以尝试getAttribute('value')
,但由于π
和π
在HTML中完全相同,因此浏览器也可以完全免费返回π
。< /秒>
一旦将HTML转换为DOM,就无法访问原始HTML(不能再使用XHR下载HTML并自行解析原始文本)。
如果您希望数据为"π"
,则其中的HTML必须为&pi;
。
如果你想要那个并且按钮上的渲染为π
,那么你需要:
<button type="button" value="&pi;">π</button>
(请记住old-IE对按钮元素的各种错误)
当您将值复制到文本输入时,当然会显示π
。
答案 2 :(得分:-1)
用它来替换所有出现的角色:
document.getElementById('input').value.replace(/π/g,"π");