如何在html 5输入元素中填充货币符号

时间:2016-09-12 11:48:04

标签: javascript jquery html utf-8

我有以下html输入元素:

<input size=6 type="text" id="prd_price" title="prd_price" name="prd_price" >

我想要“阿塞拜疆马纳特”的货币符号ман “要保存在数据库中。我想将其填充为HTML Input元素中的符号,并且可能与产品的价格相连。但是当我使用UTF-8代码动态填充输入元素时,它仍保留在代码形式,并不会成为它应该成为的货币符号。

任何人都知道我在这里失踪了什么......

2 个答案:

答案 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 "&#1084 ;&#1072 ;&#1085 ;" fixed:
var symbols = "&#1084;&#1072;&#1085;"
var plainText = $("<span></span>").html(symbols).text()
$input.val(plainText);

...将呈现为:

ман

Demo

答案 1 :(得分:-1)

首先,我获得了阿塞拜疆马纳特ман的UTF-8代码,该代码可以在“https://r12a.github.io/apps/conversion/”的javascript中运行。在这种情况下,它变成了\u043C\u0430\u043D。然后我使用以下代码运行它以使用javascript:

将其显示在input元素中

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);