HTML转义欧元符号在文本区域内无法解释?

4
<?php
$currency = "&euro;"; //using php with other data from database

echo "<script>
      $('#share_button').click(function(e){
      // pass the currency to javascript and put in textarea shared with other on clicks
           $('#snsdescp').val(`".$currency."`);
      });</script>";
?>

 //shared textarea
<textarea class="form-control" name="message" id="snsdescp"></textarea> 

2
.val() 方法不会设置 HTML,因此 "&euro;" 不会被视为 HTML 实体,而只是被视为普通字符串。您可以使用类似 .val($("<div>").html("&euro;").text()) 的“hack”来获取实际的欧元字符。 - nnnnnn
因为您将其作为值添加到“textarea”中,而不是作为将被解析的HTML。 - Spencer Wieczorek
html_entity_decode 可以帮助进行服务器端的编程。 - Jaromanda X
不要尝试去修改它,使用 html() 代替 val()。就像这样:$('#snsdescp').html('&euro;'); - phobia82
请直接使用欧元符号 。确保文件保存为 UTF-8,以 UTF-8 提供,并设置 HTML meta 字符集为 UTF-8。 - user663031
不要显示 PHP,显示 JS/HTML。 - user663031
4个回答

3
<代码>val()方法不进行编码/解码,可以使用<代码>html()函数进行编码,然后再移除文本来实现编码。
$('#share_button').click(function(e){
    $('#snsdescp').val($("<div>").html("&euro;").text());
});

这里是一个可以使用的jsFiddle,可以用于你的文本区域。


如果文本包含诸如<这样的字符,而您希望将其解释为它们自己而不是HTML,则这可能不会很好地工作。 - user663031

0

你可以使用Unicode来表示 € \u20AC

$('#snsdescp').val("\u20AC");


0

您可以通过将&euro;分配给textarea元素的innerHTML属性来设置它:

document.querySelector('#snsdescp').innerHTML = '&euro;';

如果您想使用jQuery,只需调用其.html()方法即可:
$('#snsdescp').html('&euro;');

文本区域没有 innerHTML 属性。 - user663031
好的观点。在这种情况下,虽然Chrome没有跨平台支持,但它似乎试图做正确的事情。 - Matthias Knoll

0

我不太明白你为什么要存储在 PHP 变量中,但可能你可以存储在 JavaScript 变量中。这可能会对你有所帮助。

<?php
  $currency = "\u20ac"; //using php with other data from database
?>

 <textarea class="form-control" name="message" id="snsdescp"></textarea> 
  <br/><br/>
  <div id="share_button" >hello</div>//suppose your id is here

 <script>
    var value ="<?php echo $currency;?>"; //store php value in js variable
    $("#share_button").click(function(){

        $("#snsdescp").val(value);

     });
  </script>

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