0

動的フォームの最後の行を追加および削除して、単価の合計を計算できますが、calculateSumNoTax() 関数は、php によって出力される最初の行でのみ起動されるようで、他のすべての行は jquery を介して dom に追加されますcalculateSumNoTax(); を起動しないでください。

ここで何が間違っていますか?

JS:

$(document).ready(function() {
        $("a[name='addline']").click(function(){
            $("input[name='counter']").val( Number($("input[name='counter']").val()) + 1 );
            var i = $("input[name='counter']").val();
            $('#quote > tbody:last').append('<tr id="row'+i+'"><td>'+i+'</td><td><input type="text" name="description_'+i+'" value=""  /></td><td><input type="text" name="quantity_'+i+'" value="1"  /></td><td><input type="text" name="unit_price_'+i+'" class="unit_price" value=""  /></td><td><select name="tax_percentage_'+i+'"><option value="0" selected="selected">0</option><option value="19.6">19.6%</option></select></td></tr>');
            event.preventDefault();
        });

        $("a[name='removeline']").click(function(){
            var i = $("input[name='counter']").val();
            if(i > 1){
                $("tr[id='row"+i+"']").remove();
                $("input[name='counter']").val( Number($("input[name='counter']").val()) - 1 );
            }
            event.preventDefault();
        });

        $(".unit_price").keyup(function() {
            $(this).keyup(function(){
                calculateSumNoTax();
            });
        });
    });

    function calculateSumNoTax() {
        var sum = 0;
        //iterate through each textboxes and add the values
        $(".unit_price").each(function() {
            //add only if the value is number
            if(!isNaN(this.value) && this.value.length!=0) {
                sum += parseFloat(this.value);
            }
         });

        //.toFixed() method will roundoff the final sum to 2 decimal places
        $("#notax").html(sum.toFixed(2));
    }
4

2 に答える 2

0

動的に改行が追加された場合、イベントリスナー (keyup 関数) は関連付けられません。

別途行う必要があります。イベント リスナーは、「ライン」がライブになる (作成される) とすぐに追加できます。

于 2010-03-05T12:00:05.907 に答える
0

ここで答えを見つけました:動的に追加された入力に対するJquery .keypress

に変更:

$(".unit_price").live('keypress', function(e){ $(this).keyup(function(){ calculateSumNoTax(); }); });

于 2010-03-05T12:02:00.567 に答える