2010-02-23 3 views
0

У меня есть HTML-форма, которая имитирует форму ввода счета-фактуры.jQuery перечисление динамической таблицы

Это путь загружает позицию счета-фактуры (пользователь может выбрать их через список автозаполнения с помощью JQuery):

$(document).ready(function() { 
     $("#Products").focus().autocomplete('<%=Url.Action("GetProducts", "Product") %>', { 
      dataType: 'json', 
      parse: function(data) { 
       var rows = new Array(); 
       for (var i = 0; i < data.length; i++) { 
        rows[i] = { data: data[i], value: data[i].product_name1, result: data[i].product_name1 }; 
       } 
       return rows; 
      }, 

      formatItem: function(row, i, n) { 
       return row.product_PrettyId + ' - ' + row.product_name1 + ' (' + row.product_price + ' €) '; 
      }, 
      width: 900, 
      minChars: 0, 
      max: 0, 
      mustMatch: true 
     }); 

     $("#Products").result(function(event, data, formatted) { 
      if (data) { 
       $(this).parent().next().find("input").val(data["product_id"]); 
       $("#InvoiceItems > tbody").append(
        "<tr>" + 
        "<td>num</td>" + 
        "<td>" + data["product_PrettyId"] + "</td>" + 
        "<td>" + data["product_name1"] + "</td>" + 
        "<td>" + data["product_price"] + "</td>" + 
        "<td></td>" + 
        "<td>1</td>" + 
        "<td>" + data["product_price"] + "</td>" + 
        "</tr>"); 
      } 
     }); 

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

Как это сделать?

+0

Не могли бы вы, возможно, обеспечить упрощенный пример того, что у вас уже есть, и, если возможно чего вы пытаетесь достичь? – Rune

ответ

2

Возможно, вы захотите добавить несколько классов к конкретным tds для вещей, таких как количество, цена и общее количество элементов, каждый раз, когда вы добавляете новый, вы можете обновить счетчик и сохранить его в скрытом поле и прочитать от этого значения

EDIT: завернуть .each цикл в функции

function functionName() { 
var itemCounter = 0; 
$('#InvoiceItems tr').each(function() { 
    itemCounter += 1; 
    //this loops through each row in the table 
    var quantity = parseFloat($('td.quantity', this).text()); 
    quantity = isNaN(quantity) ? 1 : quantity;//if a number isn't parsed, replace it with 1 
    var price = parseFloat($('td.price', this).text()); 
    price = isNaN(price) ? 0 : price; 
    var total = quantity * price; 
    //do something with the total 
}); 
} 

вы могли бы назвать эту функцию каждый раз, когда добавляется новый элемент, так что итоги всегда будут в курсе

+0

Ваш код выглядит хорошо, но у меня проблемы с ним. Линия с val() возвращает «undefined» и, как таковая, сумма NaN. Что может быть неправильным? – mare

+0

Я обновлю код с некоторыми проверками NaN – Jimmy

+0

, вы также можете добавить проверки проверки на свои входы, чтобы гарантировать, что значения являются числовыми – Jimmy

Смежные вопросы