【问题标题】:How to set culture to "currency" numeric textbox without affecting other numeric textbox?如何在不影响其他数字文本框的情况下将文化设置为“货币”数字文本框?
【发布时间】:2016-11-23 10:20:49
【问题描述】:

我想知道我们如何在不影响 Kendo 中的其他数字控件的情况下动态设置/更改文化为“货币”格式的数字控件。

场景: 我有 9 个剑道数字文本框,其中 4 个是“货币”格式。我必须根据用户从下拉列表中选择的货币显示在特定“文化”中输入“货币”控件的数字。下拉项目会将预期的文化设置为它们的值。

例如:如果下拉菜单有两个项目:“US-Dollar”、“Euro”,那么 如果用户从下拉列表中选择“美元”,则在“货币”控件中输入的数字应采用“en-US”文化格式。

我正在使用下面的 javascript 配置来设置剑道数字文本框。

 function setupNumericTextBoxes(root) {
        
   root.find("[data-role='numerictextbox']").each(function (index, dataControlObj) {

var textbox = $(dataControlObj).data("kendoNumericTextBox");
var numberFormat = $(dataControlObj).data("numberformat");
var cultureToSet = $(dataControlObj).data("culture");

var options = {};

            if (numberFormat === "percentage") {
                options.format = "##.00 \\%"
                options.decimals = 2;
                options.min = 0;
                options.spinners = false;
            }
            else if (numberFormat === "currency") {
                options.format = "c"
                options.decimals = 0;
                options.min = null;
                options.spinners = false;
            }
            else if (numberFormat === "year") {
                options.format = "#"
                options.decimals = 0;
                options.min = 0;
                options.spinners = false;
                setUpYearValidation(dataControlObj);
            }
            else if (numberFormat === "standard") {
                options.format = "n0"
                options.decimals = 0;
                options.min = 0;
                options.spinners = false;
            }
            else {
                options.format = "n0"
                options.decimals = 0;
                options.spinners = false;
            }

            if (cultureToSet){
                options.culture = cultureToSet;
            }

            textbox.setOptions(options);
            // Apply the format
            textbox.value(textbox.value());

        });
   
   

需要帮助来解决问题。

【问题讨论】:

    标签: javascript kendo-ui currency-formatting kendonumerictextbox


    【解决方案1】:

    为了使用 NumericTextBox 的文化配置选项,您还必须确保包含您想要支持的每种文化的相应 kendo.culture.LANGUAGE.min.js 文件,否则的格式信息文化不会包含在 kendo 用于获取格式选项的 kendo.cultures 数组中。

    http://docs.telerik.com/kendo-ui/api/javascript/ui/numerictextbox#configuration-culture

    因此,如果您想支持“en-US”和“en-IE”,您需要同时包含两者

    kendo.culture.en-IE.min.js(创建 kendo.cultures["en-IE"] 条目)

    kendo.culture.en-US.min.js(创建 kendo.cultures["en-US"] 条目)。

    然后您可以使用“en-US”和“en-IE”作为 NumericTextBox 的区域性选项。

    演示:http://dojo.telerik.com/@Stephen/IhUre

    【讨论】:

    • 感谢您的帮助。我已经在页面中包含了所需的文化,但我担心的是通过将特定文化应用于特定的数字文本框控件,其余数字文本框将“en-US”文化作为默认值。我想知道如何避免它。我只希望一个控件是特定于文化的。具体来说,就像在您的示例中一样,我只希望 #euro 数字文本框控件是“en-IE”特定的,而其他控件则没有任何文化。
    • 你能检查一下这个实现是否正确吗?我将区域性指定给一个控件,而没有将其指定给其他控件。 ** Culture specific numeric textbox **
    • 看起来不错。如果您不指定文化,则将应用默认文化(我相信 kendo 使用 en-US,除非您使用 kendo.culture() 指定它)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 2015-12-17
    相关资源
    最近更新 更多