由javascript设置的占位符文本不解码HTML编码的特殊字符

时间:2017-10-26 13:14:56

标签: javascript html

通过javascript设置占位符文本时,特殊字符无法正常显示。

function myFunction() {
    document.getElementById("myText").placeholder = "Événement";
}
<input type="text" id="myText" placeholder="&#201;v&#233;nement">

<p>Click the button to change the placeholder text of the text field.</p>

<button onclick="myFunction()">Try it</button>

输出为:“&amp;#201; v&amp;#233; nement”

预期产出:“Événement”

寻找一个javascript解决方案,我可以转换包含任何编码字符的任何文本。

2 个答案:

答案 0 :(得分:2)

在HTML中,特殊字符使用&#XXX进行编码(如&#201)。

在Javascript中,特殊字符使用\uXXXX编码(如\u00C9

检查https://en.wikipedia.org/wiki/List_of_Unicode_characters以获取转义码列表。

在你的情况下,它将是

document.getElementById("myText").placeholder = "\u00C9v\u00E8nement";

答案 1 :(得分:1)

最直接的转换方法是创建一个元素,将HTML实体设置为innerHTML并获取textConetnt,如下所示:

&#13;
&#13;
function myFunction() {
  let a = document.createElement('span');
  a.innerHTML = '&#201;v&#233;nement from JS';
  document.getElementById("myText").placeholder = a.textContent;
}
&#13;
<input type="text" id="myText" placeholder="&#201;v&#233;nement">

<p>Click the button to change the placeholder text of the text field.</p>

<button onclick="myFunction()">Try it</button>
&#13;
&#13;
&#13;