2017-09-16 4 views
0

チェックボックスと入力値の合計をその値で要約しようとしています。現在、このように私は別に両方取得しています(そしてそれは、私はそれがしたいどのように機能):Jquery sumの入力と選択したチェックボックス

$(document).ready(function() { 
    $('.box').change(function(){ 
    var totalbox = 0; 
    $('.box:checked').each(function(){ 
     totalbox+= +($(this).attr("rel")); 
    }); 
    $('#totalbox').val(totalbox.toFixed(2)); 
    }); 
}); 


$(document).on("recalc", ".vendor_accounts", function() { 
    var totalinput = 0; 
    $(this).find(".payment").each(function() { 
    totalinput += +$(this).val(); 
    }); 
    $("#totalinput").val(totalinput.toFixed(2)); 
}); 

$(".vendor_accounts").trigger("recalc"); 

上記の機能を個別に右結果を生みます。私は、これらの結果の値を組み合わせてidの中に1つのvarとして表示するだけです。以下の答えは1

、これはトリックをやったことです:

function updateGrandTotalDisplayed(val){ 
    var input1 = parseFloat($('#checkTotal').val()); 
    var input2 = parseFloat($('#inputTotal').val()); 
    var total = input1 + input2; 
    $('#totalPrice').val(total.toFixed(2)); 
}; 

答えて

1

一つの解決策は、合計を計算する機能の両方が利用可能だ範囲でtotal変数を置くことであろう。たとえば、すべてのコードの前に、あなたが書くことができます。

var grandTotal = 0; 

その小計を計算する際、あなたはgrandTotal変数に各小計を追加することができます。ページのどこかに合計を表示している場合は、その時点で関数を呼び出して、表示された合計を更新することもできます。したがって、たとえば、最初の部分で、あなたはそのようにそれを変更することができます。

$(document).ready(function() { 
    $('.box').change(function(){ 
    var total = 0; 
    $('.box:checked').each(function(){ 
     total+= +($(this).attr("rel")); 
    }); 
    $('#total').val(total.toFixed(2)); 
    grandTotal += total; 
    updateGrandTotalDisplayed(); 
    }); 
}); 

updateGrandTotalDisplayed()は、あなたが他の場所で書くの関数となり、ページ上に表示されているものに更新するためにここに呼んでいます。)この情報がお役に立てば幸いです。追加する


EDIT:あなただけの3番目の変数を使用せずに値を合計したい場合は、値を取得するためにval()機能を使用して、それらを一緒に追加することができます。たとえば、$('#totalinput').val()は、#totalinput要素内の現在の値を返します。

ただし、特定の順序で計算される2つの小計に頼ることはできません。どの計算が最初に行われるのかわからないのですか?

+0

ありがとうございます。私の状況をより明確にするためにコードを編集しました。正直なところ、私は自分のjquery関数を書くことができません...私はこのサイトの情報を解読して自分のアプリケーションで動作させることができてうれしいです。再び、jsは私が次に取り組んでいるものです。私はバックエンドのデータをどうにかして操作することができることに興奮しています。 #totalboxと#totalinputを合計する方法はありますか? – dfeva

+0

@dfeva私はあなたのためにいくつかの情報を追加するために私の答えを編集しました。 JSと他のコード(PHPなど)との最も大きな違いは、非同期的に起こり、そのことを考慮する必要があることです。 – cheryllium

+0

ありがとうございます。 _totalinput_または_totalbox_が変更されるたびに実行される '' updateGrandTotalDisplayed() ''関数を書くにはどうすればいいですか?私が使用した唯一のjs関数は、主にコピー&ペーストで、IDとクラスのいくつかの調整があります。 – dfeva

関連する問題