首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Datatable激活单元格编辑onclick

Datatable激活单元格编辑onclick
EN

Stack Overflow用户
提问于 2019-05-03 05:15:58
回答 2查看 1.6K关注 0票数 0

我在这里无法使用jQuery数据表插件:

https://editor.datatables.net/examples/inline-editing/simple

我一直收到一个错误,所以我放弃了它,并决定自己来做。

从datatable开始:

代码语言:javascript
复制
$.ajax({
  url: 'api/searchVoyageInfo.php',
  type: 'POST',
  data: '',
  dataType: 'html',
  success: function(data, textStatus, jqXHR){
    var jsonObject = JSON.parse(data); 
    var table = $('#example1').DataTable({
      "data": jsonObject,
      "columns": [{ 
        { "data": "COLUMN1" },  
        { 
          "data": "COLUMN2",
          "fnCreatedCell": function (nTd, sData, oData, iRow, iCol)
          {
            $(nTd).html("<a href='#' class='checkBound'>"+oData.COLUMN2+"</a>
                         <input type='text' class='editbound' 
                         id='editbound' data-uid='"+oData.VOYID+"' 
                         data-editbound='"+oData.COLUMN2+"' value='"+oData.BOUND+" 
                         display: none;' />");
          }
        },
        { "data": "COLUMN3" },
        // few more columns
      }],
      "iDisplayLength": 50,
      "paging": true,
      "bDestroy": true,
      "autoWidth": true,
      "dom": 'Bfrtip',
       "buttons": [
        // some extend buttons
      ]
    });
  },
  error: function(// some stuff){
    // do some other stuff
    // this part is not important
  }
});

在COLUMN2中,您应该看到一个'checkBound‘类,它在页面加载时可见。还有一个不可见的输入类'editbound‘。

下面的函数用于隐藏类'checkBound‘,然后显示类'editbound':

代码语言:javascript
复制
$('#example1').on('click', 'tr > td > a.checkBound', function(e)
{
  e.preventDefault();
  var $dataTable = $('#example1').DataTable();
  var tr = $(this).closest('tr');
  var data = $dataTable.rows().data();
  var rowData = data[tr.index()];

  $('.checkBound').hide();
  $('.editbound').show();
});

使用上面的方法,当页面加载完成时,datatable将毫无问题地显示出来。

在单击具有类'checkBound‘的单元格之一以显示输入类'editbound’时,输入确实会显示其自身,但它也会显示列中的所有其他单元格。

单击前:

单击后:

如您所见,绑定列中的第一个单元格是被单击的单元格。但当被点击时,其余的细胞都被激活了。我想阻止这种情况的发生。

我怎么才能让它工作呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-07 04:36:05

这就是我(在某种程度上)解决问题的方法。在datatable部分,我添加了一个名为VOYID的ID字段,并将该ID与类一起包含在href和输入中:

代码语言:javascript
复制
"data": "COLUMN2",
"fnCreatedCell": function (nTd, sData, oData, iRow, iCol)
{
   $(nTd).html("<a href='#' class='checkBound"+oData.VOYID+"' id='checkBound'>"+oData.COLUMN2+"</a>
                <input type='text' class='editbound"+oData.VOYID+"' 
                id='editbound' data-uid='"+oData.VOYID+"' 
                data-editbound='"+oData.COLUMN2+"' value='"+oData.BOUND+" 
                display: none;' />");
}

然后在按钮单击部分,我使用rowData来检查确切的类。这样,当您单击该链接时,只会打开唯一的类,而不是列中的所有单元格:

代码语言:javascript
复制
$('#example1').on('click', 'tr > td > a.checkBound', function(e)
{
  e.preventDefault();
  var $dataTable = $('#example1').DataTable();
  var tr = $(this).closest('tr');
  var data = $dataTable.rows().data();
  var rowData = data[tr.index()];

  var voyid = rowData.VOYID;

  $('.checkBound'+voyid).hide();
  $('.editbound'+voyid).show();
});

现在,当我单击该链接时,只有该单元格激活了输入:

票数 0
EN

Stack Overflow用户

发布于 2019-05-03 06:17:57

这就是我创建一个带有按钮的列的方式。你应该能够做类似的事情,而不是按钮!

代码语言:javascript
复制
fields: [
    { name: "column_id", title:"View" ,itemTemplate: function(value) {
                    return $("<button>").text("buttontitle")
                            .on("click", function() {
                         //do something
                          return false;
                        });

                  }]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55960355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档