防止JavaScript自动转义和字符转义

4

我在文本框中看到&,但我只想要&。我认为这与浏览器解释javascript的.innerHTML方式有关。

带有&符号的文本必须通过

元素传递。由于某种原因,我无法直接向文本框赋值。

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个回答

2

您正在使用.html(),这就是为什么&被翻译为&amp;的原因。由于它是一个输入框,所以必须是纯文本,因此当您在输入框中写入&amp;时,它会显示为文本。

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

由于某些原因,我无法直接写入文本框。值必须通过 div 传递。 - Clinton Lam

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' />


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接