-1

我在使用带有 jQ​​uery 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

4

1 回答 1

0

如果您有类似的问题,请执行以下操作:

1.将Globalize添加到您的应用程序中,我遵循了以下教程并提供了很多帮助:

https://js.devexpress.com/Documentation/Guide/Widgets/Common/UI_Widgets/Localization_-_Use_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));

希望能帮助到你。

于 2018-02-23T11:48:26.280 回答