我有以下html输入元素:
<input size=6 type="text" id="prd_price" title="prd_price" name="prd_price" >
我想要“阿塞拜疆马纳特”的货币符号ман “要保存在数据库中。我想将其填充为HTML Input元素中的符号,并且可能与产品的价格相连。但是当我使用UTF-8代码动态填充输入元素时,它仍保留在代码形式,并不会成为它应该成为的货币符号。
任何人都知道我在这里失踪了什么......
答案 0 :(得分:1)
UTF-8编码可以代表完整的Unicode目录(事实上,首字母缩略词中的字母 U 来自 Unicode ),因此您不需要HTML实体首先。只有当前编码无法处理的字符才需要这样的实体,这不是这种情况。
如果您绝对需要使用这些HTML实体(例如,您使用的是第三方数据Feed,则无法调整),您需要意识到它们只在HTML上下文中有意义。 jQuery中一个相当常见的错误是使用.text(),你应该真正使用.html()。
在这种精确的情况下,您有一个<input>
元素,因此您也无法使用它们。您唯一的选择是.val()。但是,由于<input>
根本无法包含HTML,因此您提供的所有内容.val()
最终都会以纯文本形式处理。
您可以使用的一个小技巧是创建一个分离的节点,以便您可以使用.html()
用HTML和.text()
填充它以提取纯文本表示:
var $input = $("#prd_price");
// Original string "м ;а ;н ;" fixed:
var symbols = "ман"
var plainText = $("<span></span>").html(symbols).text()
$input.val(plainText);
...将呈现为:
ман
答案 1 :(得分:-1)
首先,我获得了阿塞拜疆马纳特ман的UTF-8代码,该代码可以在“https://r12a.github.io/apps/conversion/”的javascript中运行。在这种情况下,它变成了\u043C\u0430\u043D
。然后我使用以下代码运行它以使用javascript:
var x = "\u043C\u0430\u043D";
var r = /\\u([\d\w]{4})/gi;
x = x.replace(r, function (match, grp) {
return String.fromCharCode(parseInt(grp, 16)); } );
x = unescape(x);
console.log(x);