使用jQuery Globalize格式化数字

时间:2013-05-26 20:23:11

标签: jquery localization javascript-globalize

我正在尝试使用Globalize进行适当的本地化自动格式化数字。当用户输入数值时,我需要Globalize来读取它,以正确的格式解析它,然后在用户输入的字段中输出它。

我试过这样:

$(document).on('change','.format-me',function(){
    var value = $(this).val();
    Globalize.culture("en-US");
    console.log(Globalize.format(value));
});

但它不起作用,因为记录的数字看起来与用户输入的数字完全相同。 为什么Globalize不会根据需要更改格式?

2 个答案:

答案 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 );
});

当像这样为微调器指定一个值时,它会根据分配给微调器的文化自动格式化值!