2016-11-20 8 views
0

私はいくつかのjQuery関数を使って、2つの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です。その値をdivに表示するIm​​ #cv

最初の機能は正しく動作します。 BV1に2を入力すると、-1.68のCVに正しい出力が得られますが、BV2に2番目の値12を入力すると、正しい出力が得られると8.412になります20.4

私は何が間違っているのか分かりません。 誰でもこれをデバッグするのに役立つことができますか?

いくつかのスクリーンショット: が第1の値を入力する=正しい出力 enter image description here

2番目の値何かが間違っていると間違った出力を行きます。 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()'が返された文字列を知りませんでした。私の変数を 'Number()'にラップした後、私に正しい出力を与えた –

答えて

2

Becase inputval()メソッドは文字列を返し、あなたはparseInt()を呼び出す必要が等しくなければなりません

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

そうしないと、これらの値は追加されません。それらは文字列として連結されます。したがって:

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

答えをありがとう。上記の私のコメントでは、変数「BV1」と「BV2」を「数値(BV1)」にラップすると正しい出力が得られたと述べました。 –

+1

はい、 'Number()'も解決策になります。 –

+0

ダウンボートは何ですか? –

関連する問題