Получить значение выбранного элемента с помощью кнопки добавления на стороне сервера в библиотеке jquery datatables - PullRequest
0 голосов
/ 16 января 2019

Datatables Jquery на стороне сервера Пример ссылки на проект:

Аналогично этой статье , но без использования C #.

Этот код ниже правильно получает правильную цену в правильном ряду.

   $(document).on('click','.add_btn',function (){
     var id = $(this).attr("id");

   var dataRow = $('#example').DataTable().row( id ).data();
   var price = dataRow[2];

Итак, я ожидаю, что ответ будет выглядеть примерно так:

 var qtd = dataRow[3];  //[3] because the select options is the next column
   var qtd_num = document.getElementById(qtd).selectedOptions[0].value; 

Запутанная часть заключается в получении идентификатора элемента для его включения в приведенную выше формулу. Поскольку идентификатор на данный момент - meta.row, использующий библиотеку datatables (что может измениться?). Вот мой полный код:

<script type="text/javascript"> 
var numbers= [1, 2 , 3, 4];
$(document).ready(function() {
   var table=  $('#example').DataTable( {
        "processing": true,
        "serverSide": true,
        ajax: {
        url: 'server.php',
        type: 'POST',
        },
     columnDefs: [ 
         {  targets: -1,
         render: function (data, type, row, meta) {
            return '<button type="submit" class="add_btn btn btn-success btn-md active" data-id="' + meta.row + '"  id=" ' + meta.row + ' " value="add">  <span class="glyphicon glyphicon-plus"></span> </button>';
         }
         },
         {
            targets: -2,
            render: function (data, type, row, meta){
                                    var $select = $('<select data-id="' + meta.row + '"  id="' + meta.row + ' " ></select>', {
                                    });
                                    $.each(numbers, function (k, v, row, meta) {

                                        var $option = $("<option></option>", {

                                            "text": v,
                                            "value": v
                                        });
                                        if (data === v) {
                                            $option.attr("selected", "selected")
                                        }
                                        $select.append($option);
                                    });
                                    return $select.prop("outerHTML");
         }
        } ],
    })
} ); // end ready
</script>

1 Ответ

0 голосов
/ 16 января 2019

var qtd = dataRow[3]; ничего не значит, потому что в возвращенных данных отсутствует индекс [3], который выдает ошибку.

Более простой путь для доступа к селекту в этой строке:

$(document).on('click','.add_btn',function (){
  var id = $(this).attr("id");
  var dataRow = $('#example').DataTable().row( id ).data();
  var price = dataRow[2];
  var qtd_num = $(this).closest('tr').find('select').val()
  ...
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...