【问题标题】:Summation of value in dynamic element is not shown in all browser properly动态元素中的值总和未在所有浏览器中正确显示
【发布时间】:2013-08-01 14:02:06
【问题描述】:

总和正确显示在所有浏览器中。现在,当我删除行时,总和的值会减少,但在 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/

【问题讨论】:

  • 能贴出处理、删除行的js代码吗?
  • 仅供参考:您在输入之前缺少一个开始 标记
  • 这里给出的所有js代码。
  • @user1652747 jsfiddle 中的 javascript 并未包含问题中的所有代码

标签: php jquery google-chrome firefox


【解决方案1】:

您的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);
});

【讨论】:

    【解决方案2】:
    $('#btnDel').click(function () {
            calculateSum();
        });
    

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

    在任何时候都不会从表单中删除输入,因此总和将始终相同。

    【讨论】:

    • 总和不会一直相同。你可以在这里看到jsfiddle.net/ByLrz/1 并在 chrome 浏览器中运行它。它工作正常,但问题是 Firefox
    • 我在 Firefox、chrome 和 IE 中运行过它,但看不出有什么不同?您的删除按钮没有任何功能(除了调用 calculateSum() )
    • @Paddyd 要删除的 js 脚本位于外部资源选项卡中 - gestionale.odoyabooks.com/scripts/other_book_cost.js
    • @Sean 好吧,我没看到。我对jsfiddle不太熟悉,谢谢。无论哪种方式,它仍然没有删除/添加行....
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签