如何使用javascript在文本输入中获取html特殊字符
我想将一些html特殊字符发送到文本字段,然后使用javascript将其恢复为原始格式:例如,如果我发送了“&pi”,它将在文本输入上显示“π”,当我使用javascript将其恢复时,我应该得到“&pi”,但我只能得到“π”,而不能得到“&pi”。请帮忙,我的代码如下:如何使用javascript在文本输入中获取html特殊字符,javascript,html,escaping,special-characters,htmlspecialchars,Javascript,Html,Escaping,Special Characters,Htmlspecialchars,我想将一些html特殊字符发送到文本字段,然后使用javascript将其恢复为原始格式:例如,如果我发送了“&pi”,它将在文本输入上显示“π”,当我使用javascript将其恢复时,我应该得到“&pi”,但我只能得到“π”,而不能得到“&pi”。请帮忙,我的代码如下: <script type="text/javascript"> function qpush(a) { document.getElementById('input').value += a; } f
<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" />
函数qpush(a){
document.getElementById('input')。值+=a;
}
功能表演(a){
警报(document.getElementById('input').value);
}
属性将为您提供文本,而不是HTML
您可以尝试getAttribute('value')
,但因为&pi
和π
在HTML中是相同的,浏览器完全可以自由返回π
一旦HTML被转换成DOM,就无法访问原始HTML(除非使用XHR再次下载HTML并自己解析原始文本)
如果希望数据是“&pi;”
,那么它的HTML必须是&;pi代码>
如果希望按钮上的渲染为π
,则需要:
<button type="button" value="&pi;">π</button>
π
(请记住旧IE在按钮元素上存在的各种缺陷)
当然,这将显示&pi代码>将值复制到文本输入时。使用此代码替换所有出现的字符:
document.getElementById('input').value.replace(/π/g,"π");
根据您对it的需求,您可以选择以下三种方式之一:
使用javascript转义和unescape函数:
var escape=escape('π')//escape=“%u03C0”哪个unescape将变回π
如果jQuery可用,它的html方法可能会起到以下作用:
$('input').val().html()
这是一种破解方法,但会起作用:以您希望在输入元素的“data-”属性上返回的方式保存值的副本,这将在html5中验证,并且不会在其他doctype中中断
document.getElementById('input').setAttribute('data-originalValue','&pi')
很好的解决方法,但我需要为所有特殊字符设置它,而不仅仅是π。@KelvinLi您可以维护一个特殊实体映射数组来运行replace。我尝试过,但看起来replace()无法用于π等非常特殊的字符。谢谢您的帮助,但是document.getElementById('input')。getAttribute('value')返回null。噢,忽略了这是从中获取值的不同元素getAttribute
返回属性值(输入的默认值)而不是当前值。感谢您的帮助,我使用转义形式表示数据,使用未转义形式表示显示,它工作正常。很好,我很高兴能提供帮助:)