2

I'm trying to automatically format a number with the proper localization with Globalize. When the users inputs a numeric value I need Globalize to read it, parse it in the right format, and then output it in the field where the user has entered it.

I've tried like so:

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

But it is not working, as the logged number looks exactly the same as the one entered by the user. Why isn't Globalize changing the format as needed?

4

2 回答 2

11

记录的数字看起来与输入的数字完全相同的原因是您Globalize.format()使用字符串参数调用 - 然后它将简单地返回其参数,如文档所述,假设您使用的是Globalize.js(最初称为 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"));
});

但是,我不太明白以本地化格式记录数字的意义。用户以本地化格式输入数字,但对于任何处理(客户端或服务器端),它应该以国际化格式存储。稍后在向用户显示某些结果时可以使用本地化格式。

于 2013-05-27T06:09:33.797 回答
2

我刚刚意识到使用 jquery 微调器,有一种非常简单的方法可以做我正在尝试的事情:

$(document).on('change','.check-float',function(){
    var value = $(this).val();
    $(this).spinner( "value", value );
});

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

于 2013-05-26T23:09:43.437 回答