2016-09-19 49 views
1

默认情况下,ShieldNumericTextBox不允许输入逗号并将输入的数字格式自动转换为美式格式(例如,输入10000后将为10,000)。在ShieldUI中允许使用欧洲格式输入NumericTextBox

我想将默认格式更改为欧洲格式,我在文本框的开始处找到(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:##,##}”),当用户完成输入之后集中进行的文本框。

而且它不会在输入时格式化,只有当您完成并从输入中移除焦点时,它才不会有太大帮助。任何帮助?

回答

3

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: function(value) { return "_custom_formatted_string_"; } 

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

+0

我不知道为什么,但Globalize.culture(“de”);根本不起作用,所有的文化参数都保留为英文格式,我虽然特别反转了numberFormat对象中的(。),(,),但是它将数字从美式转换为欧式,但是该字段本身并不接受用户的逗号,我想用户输入欧洲格式,而不是转换我们输入的内容。谢谢。 –

+0

更新。设置文化的工作,我之前包括一个错误的文件,但现在它的工作和改变,但它没有做好的工作,首先逗号仍然是不允许的,你可以输入美国号码,它会被格式化,这是无用的,其次纺纱人员不工作,他们从100,00摇摆到99,99。任何帮助? –