防止javascript从自动转义&字符

时间:2018-02-24 13:40:31

标签: javascript jquery html escaping

我在文本框中看到&,但我只想要&。我认为这与浏览器解释javascript .innerHTML的方式有关。 &的文字必须通过div。出于某种原因,我无法直接为文本框指定值。

HTML代码

<div id='div'></div>
<input id='textbox' type='text' />

Javascript代码

var str = 'this & char';
$('#div').append("<div>" + str + "</div>");
$('#textbox').val($('#div').html());

实际HTML输出

<div>this &amp; char</div>

用户在文本框中看到this &amp; char

渴望HTML输出

<div>this & char</div>

用户在文本框中看到this & char

2 个答案:

答案 0 :(得分:2)

您正在使用.html()这是&被翻译为&amp;的原因。由于它是一个输入,它必须是纯文本,因此,当您在输入字段中编写&amp;时,它将显示为文本。

$('#textbox').val($('#div').text());

答案 1 :(得分:1)

而不是使用html()使用text()html()将字符串视为HTML,text()将内容视为文字。

var str = 'this & char';
$('#div').append("<div>" + str + "</div>");
$('#textbox').val($('#div').text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='div'></div>
<input id='textbox' type='text' />