从数据表错误中的按钮获取数据

Posted

技术标签:

【中文标题】从数据表错误中的按钮获取数据【英文标题】:Get data from button inside datatables error 【发布时间】:2020-01-23 10:10:28 【问题描述】:

我有如下数据表脚本。数据表工作正常,但是当我单击 edit 按钮时,我收到如下错误:

未捕获的类型错误:datatables.row 不是函数。

如何修复代码并获取编辑按钮的 ID?

let data_table = $('#categories_table');

let datatables = data_table.dataTable(
  "processing": true,
  "serverSide": true,
  "order": [
    [5, "asc"]
  ],
  ajax: '/admin/categories/datatables',
  columnDefs: [
    'targets': 0,
    'searchable': false,
    'orderable': false,
    'render': function(data, type, full, meta) 
      return '<input type="checkbox" class="form-check-input-styled-primary" name="ids[]" value="' +
        $('<div/>').text(data).html() + '">';
    
  , 
    targets: -1,
    title: 'Actions',
    orderable: false,
    render: function(data, type, full, meta) 
      return `<a  href="#"  title="Edit User" class="list-icons-item text-primary-600 edit">
          <i class="icon-pencil7"></i>
        </a>
        <a href="#" title="Delete User" class="list-icons-item text-danger-600 delete">
          <i class="icon-trash"> </i>
        </a>`;
    ,
  ]
);

datatables.on('click', '.edit', function(event) 
  event.preventDefault();
  var data = datatables.row($(this).closest('tr')).data();
  let id = data[1];
  let $edit_url = "/admin/categories/" + id + "/edit";

  $.post($edit_url, 
    id: id,
    csrf_token: $csrf
  ).done(function(data) 
    update_modal.modal("show");
    update_validator.resetForm();
    $(".modal-title").text("Edit User");
    update_modal.find("form")[0].reset();
    $("#id").val(data.id);
    $("#update_csrf").val($csrf);
    $("#update_name").val(data.name);
    $("#update_email").val(data.email);
    $("#update_role").val(data.role);
    $("#update_status").val(data.is_active);
  );
);

【问题讨论】:

我觉得你应该试试var data = $(this).closest('tr').data();var data = datatables.row($(this).closest('tr')).data(); 这里icon-pencil7&lt;i&gt;标签的自动增量类? @HimanshuUpadhyay 不,这不是无关紧要的。 @HimanshuUpadhyay 当我尝试你的方式时似乎我没有收到错误但没有数据只是一个对象。 其实@Ying,&lt;a&gt; 应该有一些属性,比如&lt;a href="#" title="Edit User" class="list-icons-item text-primary-600 edit" data-record="4"&gt; &lt;i class="icon-pencil7"&gt;&lt;/i&gt; &lt;/a&gt;,然后你写的 jquery 可以获取该值4,然后你可以进一步传递它。跨度> 【参考方案1】:

您可以像这样修改您的编辑:

 
                    targets: -1,
                    title: 'Actions',
                    orderable: false,
                    render: function( data, type, row, meta ) 
                        return '\
                        <button class="btn btn-outline bg-primary border-primary text-primary-800 btn-icon btn-sm edit" data-category='+ row[1] + '>\
                          <i class="icon-pencil7"></i>\
                        </button>\
                        <button title="Delete User" class="btn btn-outline bg-danger border-danger text-danger-800 btn-icon btn-sm e delete">\
                          <i class="icon-trash"> </i>\
                        </button>';
                    ,
                

然后在您的点击编辑按钮中,您甚至可以像这样获得类别 ID:

    let id = $(this).data("category");

【讨论】:

以上是关于从数据表错误中的按钮获取数据的主要内容,如果未能解决你的问题,请参考以下文章

单击 Jquery 中的按钮从动态生成的元素中获取数据

单击按钮时Reactjs从firestore获取数据

如何从 WatchOs 中的推送通知中获取数据并处理推送通知操作按钮单击事件

通过单击按钮将数据从 Access 获取到 C# 中的文本框

单击仅使用 JavaScript 从 JSON 获取的表数据中的按钮时引用特定行

从 Android 中的 ListView 获取更新的数据