【问题标题】:Prevent javascript from auto escaping & character防止javascript自动转义和字符
【发布时间】:2018-02-24 13:40:31
【问题描述】:

我在文本框中看到&,但我只想要&。我认为这与浏览器解释 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;amp; char

需要 HTML 输出

<div>this & char</div>

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

【问题讨论】:

    标签: javascript jquery html escaping


    【解决方案1】:

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

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

    【讨论】:

    • 由于某种原因,我无法直接写入文本框。该值必须通过 div。
    【解决方案2】:

    不要使用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' />

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 2012-09-18
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多