динамический загрузочный экспорт таблицы в json (с вводом / выбором) - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть динамическая таблица, которую мне нужно экспортировать в json.

check jsfiddle

<table class="table table-sm" id="tab_logic">
   <thead>
      <tr>
         <th class="text-center"> # </th>
         <th  scope="col"> Product </th>
         <th  scope="col"> Qty </th>
         <th  scope="col"> Price </th>
         <th  scope="col"> Total </th>
         <th  scope="col">Action</th>
      </tr>
   </thead>
   <tbody>
      <tr  scope="row" id='addr0'>
         <td> 1 </td>
         <td>
            <select class="form-control-sm">
               <option>Item1</option>

            </select>
         </td>
         <td><input type="number" name='qty[]' placeholder='Enter Qty' class="form-control-sm qty" step="0" min="0"/></td>
         <td><input type="number" name='price[]' placeholder='Enter Unit Price' class="form-control-sm price" step="0.00" min="0"/></td>
         <td><input type="number" name='total[]' placeholder='0.00' class="form-control-sm total" readonly/></td>
         <td >
            <button type="button" class="btn-sm btn-danger del">Del</button>
         </td>
      </tr>
   </tbody>
</table>

Я использовал метод экспорта из этой записи чтобы получить данные из ввода и выбрать объекты в таблице:

var tbl = $('#tab_logic tbody tr').map(function (idxRow, ele) {
    //
    // start building the retVal object
    //
    var retVal = {
        id: ++idxRow
    };
    //
    // for each cell
    //
    var $td = $(ele).find('td').map(function (idxCell, ele) {
        var input = $(ele).find(':input');
        //
        // if cell contains an input or select....
        //
        if (input.length == 1) {
            var attr = $('#tab_logic thead tr th').eq(idxCell).text();
            retVal[attr] = input.val();
        } else {
            var attr = $('#tab_logic thead tr th').eq(idxCell).text();
            retVal[attr] = $(ele).text();
        }
    });
    return retVal;
}).get();

console.log(tbl);

alert(tbl);

когда я предупреждаю результат, я получаю пустой объект.что я делаю не так ??

1 Ответ

0 голосов
/ 15 декабря 2018

Не пустой объект, но alert не может отобразить его, вам нужно преобразовать переменную в строку.

alert(JSON.stringify(tbl));
...