DataTable激活单细胞编辑OnClick(第2部分)



从我以前的问题继续发现:

DataTable激活单个单元格编辑OnClick

我终于只能获得一个单元格以激活输入字段。

我的新问题是,尽管我可以单击一个单元格并激活它,但是当我使用DataTable Filter搜索或转到DataTable的另一页,但单元格激活不再工作。

$.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.VOYID+"' id='checkBound' 
                         data-uid='"+oData.VOYID+"'>"+oData.COLUMN2+"</a>
                         <input type='text' class='editbound"+oData.VOYID+"' 
                         id='editbound' data-uid='"+oData.VOYID+"' 
                         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
  }
});

如果您要注意上面的第2列部分,我在HREF的登记室类中添加了Voyid值。我还将Voyid添加到了输入的编辑中。这样做可以防止每个单个核心类使用下面的ONCLICK事件激活输入:

$('#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;
  console.log(voyid);
  $('.checkBound'+voyid).hide();
  $('.editbound'+voyid).show();
});

使用以上所有内容,在数据词的第一页上,我可以成功地激活单个单元格的输入。但这仅在第一页上起作用。我无法激活任何其他页面上的输入。

我尝试将OnClick事件从使用类转换为实现相同结果的ID。

如何解决此问题?

您可以隐藏链接并在单击事件处理程序中使用以下代码显示字段

e.preventDefault();
$(this).hide().next().show();

相关内容

  • 没有找到相关文章

最新更新