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? –