2011-03-08 24 views
3

我寫了這個應該格式化錢的小片段,但由於某種原因,它在期限上失敗了。它使每次加入他們......任何想法,爲什麼並沒有這樣做用jquery格式化錢

$(".dollar").blur(function() { 
    var curval = $(this).val(); 
    if ($(this).val().indexOf("$") != 0) { 
     $(this).val("$" + $(this).val()); 
    } 
    if ($(this).val().indexOf(".") != 0){ 
     $(this).val($(this).val() + ".00"); 
    } 
}); 
+2

如果找不到字符串,'indexOf'返回'-1'。 –

+0

你正在檢查的索引。不是0,就是價值的LHS。這隻會匹配'.50',我懷疑你只是想檢查一下。存在,在這種情況下,只需檢查'indexOf('。')!= -1' – idbentley

回答

5

我寫了一個不同的美元格式的片段,將採取任何數字(1,1.6,2.52,8.2472),並自動將其格式化爲美元符號($ 1.00,$ 1.60,$ 2.52,$ 8.24):

$('.dollars').blur(function(e){ 
    var curVal = parseFloat($(this).val()), 
     curInt = parseInt(curVal, 10), 
     curDec = parseInt(curVal*100, 10) - parseInt(curInt*100, 10); 

    curDec = (curDec < 10) ? "0" + curDec : curDec; 

    if (!isNaN(curInt) && !isNaN(curDec)) { 
     $(this).val("$"+curInt+"."+curDec); 
    } 
}); 

See it in action here.

2

的「的indexOf」函數返回字符串索引的更好的方法。我認爲你應該測試一下,看看結果是否小於零。

if ($(this).val().indexOf("$") < 0) { 
    $(this).val("$" + $(this).val()); 
} 
if ($(this).val().indexOf(".") < 0){ 
    $(this).val($(this).val() + ".00"); 

編輯哎呀—我弄錯了:-)小於零,不大於或等於。後者是你想要弄清楚字符串中的字符是否爲,但是你的代碼需要知道字符串中的不是

+2

@Tamer:您在搜索$時遇到了它,因爲$可能是數組中的第一個字符,位置爲0。小數點可能在多個位置,0或更大。 –