2012-05-28 7 views
3

Эта скрипку возвращает правильное значение "5,5" в обоих IE и FF, но в Chrome она возвращает "5,5"Jquery Globalize формат числа и Google Chrome

Fiddle: http://jsfiddle.net/4tvSH/

Globalize.culture("sv-SE"); 
alert(Globalize.format(5.5)); 

Есть ли ошибка в плагине глобализации?

редактировать:

Это странно, в Web.Config (MVC3) У меня есть этот

<globalization enableClientBasedCulture="true" /> 

Это означает, что клиент устанавливает культуру, как хром и FF сообщает SV-SE , поэтому загруженная культура глобализации является sv-SE, как в скрипке выше.

Но если я отлаживать код, указанный выше в строке 767 в Chrome

return culture.name.length ? value.toLocaleString() : value.toString(); 

value.toLocaleString() возвращает EN-US формате

Это работает, но его ножовкой ..

//Fixes a bug in Globalize/Chrome where Globalize.format returns en-US format even with sv-SE 
if($.browser.webkit == true) { 
    Globalize.orgFormat = Globalize.format; 
    Globalize.format = function(value, format) { 
     if(format == null) { 
      format = "N"; 
     } 

     return this.orgFormat(value, format); 
    }; 
} 
+0

Формат = "N" отличается от формата = null, потому что все числа имеют 2 цифры после десятичного разделителя, даже если они равны 0. – Roberto

ответ

0

Хром действительно, похоже, обрабатывает value.toLocaleString() иначе, чем firefox, однако я считаю, что это следует рассматривать как ошибку глобализации.

Я исправил это поведение в своем Globalize fork, что было так же просто, как удалить это toLocaleString iirc.

+0

Как и примечание, мое исправление оказывает меньшее влияние на более медленные броузеров, такие как IE7. IE имеет правильное поведение с помощью метода tostring, и если вы используете пользовательский код глобализации в datatable, он будет медленно изменяться с чуть более 30 элементами в таблице – Anders

Смежные вопросы