2016-11-20 55 views
0

我试着去使用一些jQuery函数乘轨道中两个number_field的值。jQuery的不乘号正确

我jQuery代码是这样的:

$('#mycometer_coc_sample_bv1').change(function() { 
    $('#cv').empty(); 
    var BV1 = $('#mycometer_coc_sample_bv1').val(); 
    var BV2 = $('#mycometer_coc_sample_bv2').val(); 
    $('#mycometer_coc_sample_cv').val((BV2 - BV1)*0.84 + BV2); 
    $('#cv').append($('#mycometer_coc_sample_cv').val()); 
}); 

$('#mycometer_coc_sample_bv2').change(function() { 
    $('#cv').empty(); 
    var BV1 = $('#mycometer_coc_sample_bv1').val(); 
    var BV2 = $('#mycometer_coc_sample_bv2').val(); 
    $('#mycometer_coc_sample_cv').val((BV2 - BV1)*0.84 + BV2); 
    $('#cv').append($('#mycometer_coc_sample_cv').val()); 
}); 

#mycometer_coc_sample_cv是用来将值发送回我的控制器隐藏number_field。即时通讯显示该值成#cv

一个div的第一个功能正常工作。我已经使用实施例编号BV1 = 2,BV2 = 12。当进入2插入BV1我得到正确的输出入的-1.68 CV​​,但在进入第二值12到BV2当我得到8.412,当正确的输出应该是20.4

我不知道怎么回事错了。 任何人都可以帮助调试吗?

一些截图: 进入第一个值=正确的输出 enter image description here

二值出现错误和不正确的输出。 CV应该等于20.4

(12-2)= 10 => 10 * 0.84 = 8.4 => 8.4 + 12 = 20.4 enter image description here

+2

的jQuery不会做乘法。这就是JavaScript。并且要明白'.val()'的返回值总是一个**字符串**,所以你必须明确地强制它成为一个数字。 – Pointy

+0

它是在浏览器中完成的......它对使用的服务器语言或框架一无所知。 Rails是不相关的 – charlietfl

+1

我不知道'.val()'返回的字符串。在'数包装我的变量后()'这给了我正确的输出 –

回答

2

input becase的的val()方法返回一个字符串,需要调用parseInt()取值如下:

var BV1 = parseInt($('#mycometer_coc_sample_bv1').val(), 10); 

否则这些值将不会被添加。它们将被连接为一个字符串。所以:

'12' + '2' === '122' 
+0

谢谢你的答案。在我上面的评论中,我提到在'Number(BV1)'中包装我的变量BV1和BV2给了我正确的输出。 –

+1

是的,'Number()'也可以是一个解决方案。 –

+0

什么是downvote? –