2016-06-11 12 views
0

私は、入力フィールド(「Suma」(「Kiekis」*「Kaina」=「Suma」)の下にある「Total」入力フィールドをクリックしたときにのみ入力値が更新されるという問題があります。 「Bendra suma」の一番下にある「合計」フィールドを自動的に更新したいと考えています。入力フィールドをクリックせずに入力値を更新するには?

JSコード:

$(document).on('keyup change', '.quantity, .price', function() { 
    var row = $(this).closest('tr').get(0); 
    var rowPrice = $(row).find('.price').val(); 
    var rowQuantity = $(row).find('.quantity').val(); 

    $(row).find('.total').val((rowPrice * rowQuantity).toFixed(2)); 

    $('.total').blur(function() { 
     var sum = 0; 

     $('.total').each(function() { 
      sum += parseFloat($(this).val()); 
     }); 

     $('#totals').val((sum).toFixed(2)); 
    }); 

}); 

あなたはそれがJSFiddleでどのように機能するかをテストすることができます助けを事前に

https://jsfiddle.net/xqy6qafk/

感謝を!

答えて

0

上でアクティブますのであなたは

は、keyUpイベント/変更イベントハンドラセクションでそれを入れて...ぼかしイベントハンドラにコードを配置する必要はありません。 ..

8行

$(document).on('keyup', '.quantity, .price', function() { 

と最後から二番目の行を削除...

}); 

だから、このようなもの...

$(document).on('keyup change', '.quantity, .price', function() { 
    var row = $(this).closest('tr').get(0); 
    var rowPrice = $(row).find('.price').val(); 
    var rowQuantity = $(row).find('.quantity').val(); 

    $(row).find('.total').val((rowPrice * rowQuantity).toFixed(2)); 

    var sum = 0; 

    $('.total').each(function() { 
     sum += parseFloat($(this).val()) || 0; // If a string is entered, use 0 instead. 
    }); 

    $('#totals').val((sum).toFixed(2)); 

}); 
1

削除変更、それはからkeyup

$(document).on('keyup', '.quantity, .price', function() { 
+0

。助けてくれない – Sprunkas

+0

https://jsfiddle.net/xqy6qafk/1/私はちょうどKainaフィールドを変更し、合計は自動的に更新されます – misha130

+0

あなたの答えをUpvoted ...しかし、このステートメントを閉じるコードがありません。 – shramee

1

これは、合計を更新しています。試してみました

$(document).on('keyup change', '.quantity, .price', function() { 
    var row = $(this).closest('tr').get(0); 
    var rowPrice = $(row).find('.price').val(); 
    var rowQuantity = $(row).find('.quantity').val(); 

    $(row).find('.total').val((rowPrice * rowQuantity).toFixed(2)); 

    // Get all the totals from each row and convert them to 
    // an array of floats. Then sum them together with reduce 
    var totalPrice = $('.total').map(function (index, el) { 
     return parseFloat($(el).val()) || 0; 
    }).get().reduce(function (a,b) { return a + b }, 0) 

    // Update the total field with the calculated totals 
    $('#totals').val(totalPrice) 
}); 

https://jsfiddle.net/xqy6qafk/2/

+0

私の答えを編集してくれてありがとう、あなたの答えをUpvotedし、あなたの編集を受け入れた:) – shramee

関連する問題