2013-12-16 65 views
0

我有一個非常大的表單,它使用來自數據庫的信息進行構建。每三位數字(千位分隔符)添加逗號的函數也在刪除小數位的句點

對於被歸類爲「數字」的所有字段,在鍵上調用一個函數以自動添加千位分隔符。它的工作原理以及

function commas(n){ 
     n = n.replace(/,/g, ''); 
     var s=n.split('.')[1]; 
     (s) ? s='.'+s : s=''; 
     n=n.split('.')[0] 
     while(n.length>3){ 
      s=','+n.substr(n.length-3,3)+s; 
      n=n.substr(0,n.length-3) 
     } 
     return n+s 
    } 

我現在已經注意到然而,如果我想要把一個小的十進制值到調用該關鍵了一個領域,它消除了一段

2.3 => 23

我看不到這是怎麼發生的:我在Stack的某個人的幫助下寫了這個逗號函數。

任何人都可以建議嗎?由於

編輯:

的現象,坡口,我不補差jsfiddle

+0

我很抱歉,但據我看到的,這個代碼應該做你想要什麼,我不能管理重現bug。 http://jsfiddle.net/bX92V/也許還有別的是你的問題的原因? –

+0

請提供一個jsfiddle出現此問題。我也無法複製它。 –

+0

同樣在這裏。 jsFiddle或不存在。 – freakish

回答

2

的問題是,只要你輸入的代碼看到有「」在它之後沒有任何事情,並且設置s =''。效果是每次輸入'。'時,它都會被刪除。

嘗試這樣:

function commas(n) { 
    n = n.replace(/,/g, ''); 
    var s = n.split('.')[1]; 
    (s) 
     ? s = '.' + s 
     : n.indexOf('.') >= 0 
      ? s = '.' 
      : s = ''; 
    n = n.split('.')[0]; 
    while (n.length > 3) { 
     s = ',' + n.substr(n.length - 3, 3) + s; 
     n = n.substr(0, n.length - 3); 
    } 
    return n + s; 
} 
+0

不知道爲什麼這是downvoted?該問題被轉載(http://jsfiddle.net/HkcPw/)和上述修復它。 –

+0

感謝您的時間和精力!我沒有投票給你,事實上,也許有人只是不相信你會轉載它。似乎很奇怪,上面的評論者稱爲函數的方式不會產生問題嗎?我會投你一票贊成撤銷下降 – Gideon

+0

雖然我沒有投票,但最初這似乎解決了問題(2.3 => 23)中所述的問題,但現在看起來像這樣事實上他試圖解釋的問題。 –

相關問題