我在使用带有jQuery UI微调器的globalize.js 1.x时遇到问题。
我想在微调器中的数字旁边显示相应的货币符号。但是我从以下两个函数中得到了错误:
Globalize.format
Globalize.parseFloat
显然,这两个功能在Globalize 1.x中不可用。相反,他们引入了新功能:
.parseNumber( value [, options])
.formatNumber( value [, options] )
.formatCurrency( value, currency [, options] )
.formatDate( value, pattern )
我曾尝试在jQuery UI源代码中使用这些函数,但它完全破坏了微调器。
知道如何解决这个问题吗?
我正在使用:
jQuery UI - v1.12.1 全球化v1.3.0
答案 0 :(得分:0)
如果您遇到类似问题,请执行以下操作:
1.将Globalize添加到您的应用中,我已经按照以下教程进行了大量帮助:
2.将jquery UI添加到您的项目中。
3.创建新的javascript文件并将其放在jquery UI文件之后。
4.添加以下脚本到新的js文件:
$(function ($) {
$.ui.spinner.prototype._parse = function(val) {
if (typeof val === "string" && val !== "") {
val = val.match(/([0-9,.]+)/)[0];
if (window.Globalize && this.options.numberFormat) {
val = Globalize(this.options.culture).parseNumber(val);
} else
val = (+val);
}
return val === "" || isNaN(val) ? null : val;
};
$.ui.spinner.prototype._format = function (value) {
if (value === "") {
return "";
}
if (window.Globalize && this.options.numberFormat) {
var formatter = null;
if (this.options.numberFormat === 'n' || this.options.numberFormat.match('^[n][0-9]')) {
var fractionDigits = this.options.numberFormat.replace(/^\D+/g, '');
if (fractionDigits) {
formatter = Globalize.numberFormatter({ minimumFractionDigits: fractionDigits });
} else
return value;
} else if (this.options.numberFormat === "c" || this.options.numberFormat.length === 3) {
var currencyCode = this.options.numberFormat;
if (currencyCode.length !== 3)
currencyCode = 'GBP';
if (currencyCode.length !== 3)
return value;
formatter = Globalize.currencyFormatter(currencyCode);
}
return formatter(value);
}
else
return value;
}
}(jQuery));
希望它有所帮助。