Как создать автосумму в jquery с помощью onchange

0

У меня проблема с моим кодом. Я создал простой файл jquery, который автоматически загружает каждую строку в моей таблице. Моя проблема в том, что я не могу получить правильную сумму моих строк. Вот что я сделал.

В моем jquery

$('[id^=total]').on('change',function() {

        var index = this.id.match(/\d+/)[0];
        var total_input = parseInt($('#total'+index).val());

        var total = 0;

        $('[id^=total]').each(function(index){
            total += parseFloat($(this).val()?$(this).val():0);
        });

        var totalAll = $('#total_amt_due').val(total.toFixed(2));           
});

В моем HTML

<table border="1">
        <tr>
            <td>
                <input type='text' name='total[]' id='total1' value='' />
            </td>
        </tr>
        <tr>
            <td>
                <input type='text' name='total[]' id='total2' value='' />
            </td>
        </tr>
        <tr>
            <td>
                <input type='text' name='total[]' id='total3' value='' />
            </td>
        </tr>
        <tr>
            <td>
                <input type='text' name='total[]' id='total4' value='' />
            </td>
        </tr>
        <tr>
            <td>
                <input type='text' name='total[]' id='total5' value='' />
            </td>
        </tr>
        <tr>
            <td>
                <input type="text" class="k-textbox" value="0.00" style="color: red; text-align: right;
                    font-family: courier" name="total_amt_due" id="total_amt_due" readonly="readonly" />
            </td>
        </tr>
</table>

Я создал эту таблицу в PHP динамически. Но для простоты я удаляю циклы. Я плохо разбираюсь в jquery. Итак, можете ли вы дать мне простой ответ на создание автозапуска?

Здесь скрипка: http://jsfiddle.net/rochellecanale/K8UNQ/3/

Теги:

2 ответа

3
Лучший ответ

у вас есть проблема с строкой, которая отображает сумму итогов, потому что id также начинается с "total". Просто измените его id (скажем, amt_due вместо total_amt_due):

<td>
         <input type="text" class="k-textbox" value="0.00" style="color: red; text-align: right; font-family: courier" name="total_amt_due" id="amt_due" readonly="readonly" />
     </td>

Проверьте это: FIDDLE

  • 0
    +1 это хорошее исправление.
  • 0
    Спасибо ребята за ответ. :)
0
var total = 0;
$('[id^=total]').on('change', function () {
    if ($.trim($(this).val()) != '') {
        total += parseFloat($(this).val() ? $(this).val() : 0);
    }
    var totalAll = $('#total_amt_due').val(total.toFixed(2));
});

РАБОЧАЯ ДЕМО

  • 0
    Не рассчитывает это правильно !!!
  • 0
    Да, не правильно рассчитать. Но спасибо за идею.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню