2010-04-09 75 views
0

我有兩個文本框。我在一個文本框中輸入數字。我爲該文本框編寫以下JQUERY,當從第一個文本框中將焦點移出時,該文本框將被執行。 JQUERY代碼從第一個文本框中獲取輸入值,並將其乘以十進制數34.95,並在第二個文本框中顯示答案。JQUERY中的數學計算問題

的代碼是做計算點點OK,因爲

當我在第一個文本框中輸入值1000它給出了第二個文本框回答34950,當我在第一個文本框中輸入值100它給答案第二個文本框中爲3495.0000000000005。

**請任何人告訴我什麼是問題。問題在於我的JQUERY代碼。

  1. 我也想用小數點顯示答案。

  2. 答案應該總是在小數點後只有兩個數字。所以如何實現這一點。**

這是我的JQUERY代碼。

$("#id_pvalue").focusout(function() { 
     q=$("#id_pvalue").val(); 
     var ans=q*34.95; 
     $("#id_tvalue").val(ans); 
    }); 

請指導我的朋友!

謝謝!

+2

jQuery是一個框架,** javascript **的語言。 – Dykam 2010-04-09 13:08:50

回答

4

雖然Darin的答案應該工作,這裏的另一種方法來限制你的價值小數點後兩位:

var ans=q*34.95; 
ans = ans.toFixed(2); 
0

嘗試

$("#id_pvalue").blur(function() { 
    q= parseFloat($(this).val()); 
    var ans=q*34.95; 
    $("#id_tvalue").val(ans); 
}); 
+0

@rahul 仍然有與上面解釋1相同的問題。當輸入100時它給出ans 3495.0000000000005 2.當輸入1000時它給出了ans 34950我現在做什麼? – 2010-04-09 12:44:11

2

val函數返回一個字符串。你需要將其轉換爲數字:

$('#id_pvalue').focusout(function() { 
    var q = parseFloat($(this).val()); 
    if (!isNaN(q)) { 
     var ans = Math.round(q * 34.95 * 100)/100; 
     // If you always want to have two decimals after the separator 
     // you could use the toFixed function: 
     // var ans = (q * 34.95).toFixed(2); 
     $('#id_tvalue').val(ans); 
    } 
}); 
+0

@Darin季米特洛夫 仍然有同樣的問題,上述 1.作爲解釋輸入100它給俺們當3495.0000000000005 2.當進入1000它給俺們34950 我現在做什麼? – 2010-04-09 12:43:25

+2

由於存儲浮點數的方式,您可能需要對結果進行四捨五入。看看這篇文章:http://www.javascriptkit.com/javatutors/round.shtml – 2010-04-09 12:47:49

+0

我已經更新了我的答案,以反映結果的四捨五入。 – 2010-04-09 12:49:03

0
$("#id_pvalue").focusout(function() { 
     var q= parseFloat($("#id_pvalue").val()); 
     var ans= (q*34.95).toFixed(2); 
     $("#id_tvalue").val(ans); 
    });