2011-07-01 99 views
1

我有一個腳本,只是添加了字段2 & 3,但是因爲我已將數字格式化爲貨幣($x,xxx.xx)field1返回NaN。在計算之前是否可以從數字中去除$符號?我認爲逗號和期限不會導致同樣的問題。點擊計算按鈕在點擊事件中獲取NaN

onclick="document.getElementById('field1').value = (Math.round((parseFloat(document.getElementById('field2').value,2)*100))/100 + Math.round((parseFloat(document.getElementById('field3').value,2)*100))/100).toFixed(2);" 

之前,我格式化添加的數字onblur="forA();"(只要用戶離開田):

function forA() { 
    document.getElementById('fieldY').value = "$" + addCommas1(document.getElementById('fieldZ').value); 
} 

function addCommas1(nStr) { 
    nStr += ''; 
    x = nStr.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    return x1 + x2; 
} 
+1

*我認爲逗號和週期不會導致同樣的問題*他們這樣做:'+ 「1,234.50」 - > NaN' –

+2

TL;博士:變量包含字符串' 「$ 123,456.78」';我如何從中得到數字'123456.78'? –

+0

爲什麼不簡單地將它們添加到第一個地方_。 –

回答

3

做計算

之前就刪除所有非點/位
var currency = "$2,358.88"; 
var number = Number(currency.replace(/[^0-9.]+/g,"")); 
+2

'.'不必在字符類中轉義。 –

+0

趕上菲利克斯...刪除它。 –

+0

所以我的字面變化將是... var currency1 ='field2「; var number = Number(currency1.replace(/ [^ 0-9。] +/g,」「)); var currency2 ='field2」 ; var number = Number(currency2.replace(/ [^ 0-9。] +/g,「」));我在哪裏放這個代碼?在「onclick」事件中或在主JScript部分。謝謝你們的幫助。 – user821522