2013-04-17 34 views
0

我有一個快速和安靜的代碼,但結果在一些計算格式非常大​​,包括所獲得的值不進入計算。如何做到這一點看到正確的結果?結果格式正確jquery函數

我想計算結果(3 * 2215.40)是3 646.20和非3.6450000000000005。

怎麼樣?

碼 - http://jsfiddle.net/bruno_aw/M7JZu/

$(".calc_cub").on("keyup", ".qtd", function(){ 
    var valorCub = $("#CUB").text();   
    var number = parseFloat(valorCub); 
    var qtd = +$(this).val(); 
    $(".total").text(number * qtd).val().toFixed(2); 
}); 

回答

1

您需要先從文本中獲取數字。在.total上設置文本之後,您也正在調用.val() - 您真正需要的是$(".total").text((number * qtd).toFixed(2));

$(".calc_cub").on("keyup", ".qtd", function() { 
    var valorCub = $("#CUB").text().split(' '); // returns ["Valor", "CUB", "R$", "1,215.40"] 
    var number = parseFloat(valorCub[valorCub.length - 1].replace(',','')); // get last one in array and remove comma 
    var qtd = +$(this).val(); 
    $(".total").text((number * qtd).toFixed(2)); 
}); 

http://jsfiddle.net/GMjjc/

+0

OW男人!! 我試過幾次使用替代和格式,再加上縫不知道。 祝賀和比你呢。 完美@wirey 謝謝! –

+0

您的歡迎:)我不知道你是否在你的HTML中有一個拼寫錯誤,但我把它從'1.215,40'改爲'1,215.40' –

0

試試這個變化:

$(".total").text((number * qtd).toFixed(2)); 

注意,在你的提琴的CUB div有文字和數字。當數字在字符串的前面時,parseFloat()工作。所以你需要安排一些東西,這樣數字就是孤立的。你可以這樣做:

<div>Some text is here <span id="CUB">1234.50</span></div> 
+0

沒錯,但沒能趕上排除 「」 數的值。 :( –

+0

好! 得到了整個問題是「」 此值是在谷歌文檔數據表使用表的客戶。「會要問走‘’。 謝謝李Meador ,請感謝 –

+0

您可能會閱讀:http://stackoverflow.com/questions/2085275/what-is-the-decimal-separator-symbol-in-javascript,因爲它討論了國際號碼格式差異的使用和處理與他們parseFloat()。 –

0

你混合了文本塊的字符串和浮點數的分隔符。嘗試這個;

http://jsfiddle.net/M7JZu/8/

的JavaScript

$(".calc_cub").on("keyup", ".qtd", function() { 
    var valorCub = $("#CUB").text(); 
    valorCub = parseFloat(valorCub.split('$ ')[1].replace('.', '').replace(',', '.')); 
    var qtd = $(this).val(); 
    $(".total").text(valorCub * qtd); 
}); 

對於輸出的緣故,你可以在.再次輸出轉換回,(逗號)。

+0

感謝@Allendar 它也完美。 –