2016-12-13 12 views
0

私はフォームを完成させました。ユーザー選択に基づいてAJAXを塗りつぶした後、入力フィールドの合計値を計算する必要があります。私は試して試してみたが解決策を見出そうとしたが、何も動いていない。読み取り専用入力の動的値の合計を計算します。 JqueryとAJAX

ここで合計がに返却する必要があることを計算する必要がある入力フィールドとフィールドのHTMLです:

<input type="text" class="form-control prices" id="lt1total" placeholder="Amount" value="" readonly> 
<input type="text" class="form-control prices" id="lt2total" placeholder="Amount" value="" readonly> 
<input type="text" class="form-control prices" id="lt3total" placeholder="Amount" value="" readonly> 

<input type="text" class="form-control disabled" id="lttotal" placeholder="Amount" value="" readonly> 

ここでは、(彼らはすべてが正常に動作ごとに1つがあるAJAX要求であります):

$.ajax({ 
     method: 'GET', 
     url: 'example.url', 
     data: { 
      lt1datetype: lt1datetype, 
      lt1tt: lt1tt, 
     } 
    }).done(function(result) { 
     console.log('', result); 
     $('#lt1total').val(result); 
    }); 

そして、これは私も#lttotalの値を置くために得ているだけjqueryの関数である:

$(document).ready(function() { 
    var sum = 0; 
    $(".prices").each(function(){ 
     sum += Number($(this).val()); 
    }); 
    $("#lttotal").val(sum); 
}); 

金額は0のみを出力します。 AJAXが得ている値は、123.00または1234.00のようなものです。私は立ち往生し、さらに悪化しています。どんな助けや方向性も高く評価されます。

+0

*「それぞれに1つあります」という意味ですか?各入力を要求する場合は、合計を実行するためにすべての要求が完了した後に計算コードを実行する必要があります。明確化なしではっきりとはっきりしない – charlietfl

+0

リフト券ごとに生成された金額ごとにAJAXリクエストがあります。したがって、#lt1totalを取得するには、データベースにAJAXリクエストがあり、ユーザー入力に基づいてフィールド値を抽出し、#lt1totalの値に移入します。 #lt1total、#lt2total、#lt3totalにそれぞれ1つずつあります。 –

+0

だから私はちょうど更新合計ボタンを作成し、ユーザーが送信ボタンを押すことができます前に、変更時に.clickとチェックボックスに関数をバインドしてしまった。どうもありがとうございました! –

答えて

1

$.whenを使用すると、すべての要求が完了した後で計算コードを実行できます。

var request1 = $.ajax({ 
     method: 'GET', 
     url: 'example.url', 
     data: {...} 
    }).done(function(result) { 
     console.log('', result); 
     $('#lt1total').val(result); 
    }); 

var request2 = $.ajax({ 
     method: 'GET', 
     url: 'example.url', 
     data: {...} 
     } 
    }).done(function(result) { 
     console.log('', result); 
     $('#lt2total').val(result); 
    }); 

$.when(request1, request2....., requestn).done(function(){ 
    // set totals here instead of on page load 
})