我正在尝试使用Globalize进行适当的本地化自动格式化数字。当用户输入数值时,我需要Globalize来读取它,以正确的格式解析它,然后在用户输入的字段中输出它。
我试过这样:
$(document).on('change','.format-me',function(){
var value = $(this).val();
Globalize.culture("en-US");
console.log(Globalize.format(value));
});
但它不起作用,因为记录的数字看起来与用户输入的数字完全相同。 为什么Globalize不会根据需要更改格式?
答案 0 :(得分:10)
记录的数字与输入的数字完全相同的原因是您使用字符串参数调用Globalize.format()
- 它将简单地返回其参数,如文档所示,假设您正在使用{{3 (最初称为jQuery Globalize,后来独立于jQuery)。 HTML中的输入控件的值被视为一个字符串,并且要作为数字处理,它需要以某种方式进行转换。
在此上下文中,应使用Globalize.parseFloat()
进行解析,并在记录时,您需要传递,例如格式参数n2
(因为对于一个数字,默认格式为i
,这很少有用 - Globalize.js的一个陷阱):
$(document).on('change','.format-me',function(){
var value = $(this).val();
Globalize.culture("en-US");
var num = Globalize.parseFloat(value);
if(isNaN(num)) console.log('Parsing failed');
console.log(Globalize.format(num, "n2"));
});
但是,我没有完全看到以本地化格式记录数字的重点。用户以本地化格式输入数字,但对于任何处理(客户端或服务器端),它应以国际化格式存储。以后可以在向用户显示某些结果时使用本地化格式。
答案 1 :(得分:2)
我刚刚意识到使用jquery微调器,有一个非常简单的方法来做我正在尝试的事情:
$(document).on('change','.check-float',function(){
var value = $(this).val();
$(this).spinner( "value", value );
});
当像这样为微调器指定一个值时,它会根据分配给微调器的文化自动格式化值!