动态元素中的值的总和未在所有浏览器中正确显示

时间:2013-08-01 14:02:07

标签: php jquery google-chrome firefox

总和在所有浏览器中正确显示。现在当我删除行时,summation的值将减少但在firefox浏览器中没有正确显示它。假设10 + 10 + 10 = 30如果删除2行则sum表示20。但这将是10.出了什么问题。

<script>
    $(document).ready(function () {
        $("form").on('keyup', '.input_ttotal', function() {
            calculateSum();
        });

        $('#btnDel').click(function () {
            calculateSum();
        });

    });

    function calculateSum() {

        var sum = 0;

        $(".input_ttotal").each(function () {
            if (!isNaN(this.value) && this.value.length != 0) {
                sum += parseFloat(this.value);
            }
        });
        $("#sum").html(sum.toFixed(2));
    }
    </script>

Html

<form action="" method="POST">
    <div class="yes">
        <div id="cost1" class="clonedCost" style="display: inline;">
            <table border="0">
                <tr>
                    <td>
                        <label class="total" for="total">Total 1</label>
                    </td>
                </tr>
                <tr>
                    <input class="input_ttotal" id="ttotal" type="text" name="ttotal[]" />
                    </td>
                </tr>
            </table>
        </div>
        <div id="addDelButtons_cost">
            <input type="button" id="btnAdd" value="+">
            <input type="button" id="btnDel" value="-">
        </div>
        <p>Sum is:<span id="sum">0</span>
        </p>
    </div>
</form>

jsfiddle链接是http://jsfiddle.net/ByLrz/1/

2 个答案:

答案 0 :(得分:0)

$('#btnDel').click(function () {
        calculateSum();
    });

所有这一切都调用calculateSum函数,该函数反过来计算".input_ttotal"输入中所有值的总和。

输入中没有任何输入被删除,因此总和将始终相同。

答案 1 :(得分:0)

您的calculateSum();很可能在删除元素之前被调用。请尝试在http://gestionale.odoyabooks.com/scripts/other_book_cost.js

的删除确认功能中添加它
$('#btnDel').click(function () {

    if (confirm("Are you sure you wish to remove this section? This cannot be undone."))
        {
            var num = $('.clonedCost').length;

            $('#cost' + num).slideUp('slow', function () {$(this).remove(); 

            // after $(this).remove() recalculate
            calculateSum();

                if (num -1 === 1)
            $('#btnDel').attr('disabled', true);

            $('#btnAdd').attr('disabled', false).prop('value', "");});
        }
    return false;

    $('#btnAdd').attr('disabled', false);
});