Таблица данных и столбец суммы со скидкой и исходной ценой в одной ячейке - PullRequest
0 голосов
/ 26 июня 2018

Я бы хотел (в таблицах данных) суммировать столбец, чтобы получить итоговое значение в нижнем колонтитуле, но в моем случае я должен показать исходную цену и цену со скидкой внутри одной ячейки:

<td data-price="100"><p style="text-decoration:line-through;color:red;"><small>150</small></p>100</td>

Я использую сейчас это:

"footerCallback": function (row, data, start, end, display) {
    var api = this.api(),
    intVal = function (i) {
          return typeof i === 'string' ?
               i.replace(/[, Rs]|(\.\d{2})/g,"")* 1 :
               typeof i === 'number' ?
               i : 0;
    },
    total2 = api
        .column(2)
        .data()
        .reduce(function (a, b) {
            return intVal(a) + intVal(b);
        }, 0);

     $(api.column(2).footer()).html(
        total2
     );
}

Отлично работает для стандартных ячеек, таких как: <td>200</td>, но если у меня есть это:

<td data-price="100"><p style="text-decoration:line-through;color:red;"><small>150</small></p>100</td>

Я не знаю, как это исправить.

Моя скрипка: http://live.datatables.net/sadipaji/610/edit

1 Ответ

0 голосов
/ 15 августа 2018

https://datatables.net/plug-ins/api/sum() Это ссылка на плагин, которую нужно использовать, чтобы удалить все символы, кроме целочисленного значения столбца.

Существует два способа регистрации этого плагина. 1. Просто добавьте ссылку на плагин 2. Используйте код плагина прямо в вашем js-файле

jQuery.fn.dataTable.Api.register ('sum ()' String, function () {

return this.flatten().reduce( function ( a, b ) {

    if ( typeof a === 'string'String ) {

        a = a.replace(/[^\d.-]/g, ''String) * 1;

    }

    if ( typeof b === 'string'String ) {

        b = b.replace(/[^\d.-]/g, ''String) * 1;

    }



    return a + b;

}, 0 );

});

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