2013-05-26 91 views
1

我試圖用Globalize自動格式化一個數字。當用戶輸入數字值時,我需要全球化來讀取它,以正確的格式解析它,然後將其輸出到用戶輸入的字段中。帶jQuery的格式編號全球化

我已經試過像這樣:

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

但它無法正常工作,如記錄的數量看起來完全一樣,用戶輸入的一個。 爲什麼不全球化根據需要更改格式?

+0

爲什麼需要全球化一個號碼?用戶輸入什麼類型的數據?貨幣?日期? (僅供參考) – adaam

+1

那麼,因爲每種文化都有不同的顯示即使是簡單浮點數的方式,例如1.000與1,000。在這兩種情況下,我的意思是一千,但在某些文化(主要是歐洲),第二個將被視爲一個,因爲逗號標識小數。 – ghego1

+0

好吧,我現在明白了。很高興你找到了解決方案! – adaam

回答

2

我剛剛意識到,使用jQuery微調,有一個很簡單的方法做什麼,我是想:

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

當值賦給像這樣的微調,它會自動格式化值相應地分配給微調的文化!

+0

嘿。任何線索如何解決這種情況下的小數格式? http://stackoverflow.com/questions/26996151/set-decimal-format-in-jquery-globalize –

9

爲什麼登錄號看起來完全一樣,進入的原因之一是,你是用字符串參數調用Globalize.format() - 那麼它只會返回它的參數,如記錄,假設你使用Globalize.js(原名jQuery的Globalize的,後來獨立於jQuery)。 HTML中的輸入控件的值被視爲一個字符串,並作爲一個數字來處理,它需要以某種方式進行轉換。

在這種情況下,應該使用Globalize.parseFloat()進行解析,並且在記錄時,您需要通過例如format參數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")); 
}); 

不過,我不太明白這一點在登錄的以本地化格式編號。用戶以本地化格式輸入數字,但對於任何處理(客戶端或服務器端),都應以國際化格式進行存儲。當向用戶顯示一些結果時,稍後可以使用本地化格式。

+0

謝謝你的長時間解釋,非常有幫助!你對記錄本地化版本絕對正確,我試圖理解它是如何工作的,我對本地化字符串的實際使用不會是日誌輸出。 – ghego1