2010-04-09 149 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); 
    });