JQuery через входы и добавить их - PullRequest
0 голосов
/ 02 ноября 2011

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

Я взял на себя сложность при добавлении промежуточного итога, итоговой суммы налога, итоговой суммы налога два и итога налога с продаж, но это не сработало. Я также хотел бы, чтобы сумма каждого ряда справа. У меня нет ни малейшего представления о том, как это сделать.

вот jsfiddle, над которым я работаю. http://jsfiddle.net/SU5jU/20/

усовершенствовано -> http://jsfiddle.net/SU5jU/39/

Ответы [ 3 ]

3 голосов
/ 02 ноября 2011

Вы используете this для ссылки на текущее поле ввода внутри каждого цикла, когда вы должны использовать $ (this) .

Кроме того, вы должны проанализировать все входные значения для плавания, в текущей скрипте вы просто соединяете строки.

http://jsfiddle.net/xvsC7/3/

1 голос
/ 02 ноября 2011

Вы используете метод .toFixed для строки (3-кратное добавление .val()).Преобразуйте эти строки в число.Кроме того, вы забыли использовать .val() в своем последнем элементе ввода в var row_total = ..

var row_total = (parseInt($inputs.eq(1).val(), 10)
               + parseInt($inputs.eq(2).val(), 10)
               + parseInt($inputs.eq(3).val(), 10)).toFixed(2);

Наконец, замените все вхождения this.val() на this.value ( или $(this).val()).

Скрипка: http://jsfiddle.net/SU5jU/26/

0 голосов
/ 02 ноября 2011

Проверьте это.Я частично переписал твой код.Возможно, вам будет полезно:

Код: http://jsfiddle.net/SU5jU/28/

Основной расчет здесь:

function CalculateData()
{
    var price = parseFloat($(this).val());

    var tax_one_rate = parseFloat($('[name="tax_one_rate"]').val()),
        tax_two_rate = parseFloat($('[name="tax_two_rate"]').val()),
        sales_tax_rate = parseFloat($('[name="sales_tax_rate"]').val());

    var $tr = $(this).parent().parent();
    $tr.find('td input[name="tax_one[]"]').val((tax_one_rate * 0.01 * price).toFixed(2));
    $tr.find('td input[name="tax_two[]"]').val((tax_two_rate * 0.01 * price).toFixed(2));
    $tr.find('td input[name="sales_tax[]"]').val((sales_tax_rate * 0.01 * price).toFixed(2));

    var rowTotal = 0;
    $tr.find('td:gt(1) input').each(function() {
        rowTotal += parseFloat($(this).val());
    });
    $tr.find('#row_total').text((price - rowTotal).toFixed(2));

    CalculateTotal();
}
...