【问题标题】:Allow European Format input in ShieldUI NumericTextBox允许在 ShieldUI NumericTextBox 中输入欧洲格式
【发布时间】:2017-01-27 00:50:42
【问题描述】:

默认情况下,ShieldNumericTextBox 不允许输入逗号,并自动将输入的数字格式化为美式格式(例如,输入 10000 后将为 10,000)。

我想将默认格式更改为欧洲格式,我在文本框的启动处找到了(textTemplate)选项,但它对我格式化输入不起作用,它对于在旁边添加文本很有用数字(例如 KG、EUR...等)。

$("#numericTextBox").shieldNumericTextBox({
    textTemplate: "{0:##,##}", // The numbers in my case are percentages with 2 digits after decimal.
    min: 0,
    max: 1,
    step: 0.01,
    spinners: true
});

当用户完成输入并将焦点移出文本框时,此 textTemplate 将输出相同的字符串(“{0:##,##}”)。

而且它在打字时也不会格式化,只有当你完成并从输入中移除焦点时,所以它不会有太大帮助。有什么帮助吗?

【问题讨论】:

    标签: javascript jquery number-formatting shieldui


    【解决方案1】:

    ShieldUI 使用 Globalize JS 来处理特定于文化的值格式。

    在您的情况下,您应该首先将区域性设置为用逗号而不是句点分隔数字的整数和十进制数字的区域性。然后,您可以设置 textTemplate 的格式以将其显示为具有 2 个十进制数字的数值,如下所示:

    <!-- include the globalize culture -->
    <script src="globalize.culture.de.js" type="text/javascript">//</script>
    
    <script type="text/javascript">
    $(document).ready(function () {
        // set a German Globalize culture
        Globalize.culture("de");
    
        $("#numericTextBox").shieldNumericTextBox({
            textTemplate: "{0:n2}", // display as numeric having 2 decimal fields
            min: 0,
            max: 1,
            step: 0.01,
            spinners: true
        });
    
    });
    </script>
    

    处理显示的文本的另一种方法是为 textTemplate 的值提供如下所示的函数:

    textTemplate: function(value) { return "_custom_formatted_string_"; }
    

    这将用逗号替换所有句点。

    【讨论】:

    • 我不知道为什么但是 Globalize.culture("de");根本不起作用,所有文化参数都保留为英文格式,虽然我确实在 numberFormat 对象中专门反转了(。),(,),它将数字从美国转换为欧洲,但该字段本身并没有接受用户的逗号,我希望用户以欧洲格式输入,而不是转换我们输入的内容。谢谢。
    • 更新。设置文化有效,我之前包含了一个错误的文件,但现在它可以工作并改变了,但它没有做好这项工作,首先仍然不允许使用逗号,你可以输入美国数字,它会被格式化,这是没用的,其次旋转器不工作,它们从 100,00 摆动到 99,99。有什么帮助吗?
    猜你喜欢
    • 2018-01-13
    • 2016-04-02
    • 2010-10-28
    • 1970-01-01
    • 2021-12-23
    • 2012-08-05
    • 1970-01-01
    • 2020-10-03
    • 2010-11-26
    相关资源
    最近更新 更多