Показать сообщение отдельно
  #13 (permalink)  
Старый 21.03.2015, 00:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Тогда нужно обращаться к таблицам по имени класса - заменить в примере id="as_name" на class="as_name", указав его всем таблицам. Чтобы не нагружать сценарий поиском элементов, расчет общей суммы производить также только во время изменений в поле ввода, последовательно добавляя/удаляя его значение у ранее определенной переменной хранящей сумму. При нажатии клавиши текущее значение поля вычитать из суммы, а при отпускании добавлять. Получится нечто такое:

$(function() {
    $('table.as_name').on('keydown keyup', 'input', function(e) {
        var p = $(this.parentNode),
            t = p.closest('table'),
            d = t.data('t'), 
            v = this.value.replace(/\D/g, '') * 1, 
            m = p.prev().text().replace(/\D/g, '') * v;
        
        if(e.type=='keydown') t.data({t: d -= d ? m : 0});    
        else{    
            t.data({t: d += m});
            this.value = v ? v : '';
            p.next().text(m ?  m : '');
            t.find('tr:last td.tot').text(d ? d : '') //ячейка таблицы хранящая сумму, также должна иметь не id="tot", а class="tot"
        }
    }).data({t: 0});
});

Последний раз редактировалось laimas, 22.03.2015 в 16:04.
Ответить с цитированием