微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在加载时自动“单击” DataTable中的第一行

如何解决如何在加载时自动“单击” DataTable中的第一行

我有一个要向其中加载sql数据的Jquery DataTable,它显示此数据的X行,然后可以单击DataTable上的一行,然后使用Jquery在用户屏幕上填充输入。现在,我希望能够使DataTable在加载时自动在第一行上“单击”,以便它可以使用第一个值(较少的人为干预)填充这些输入。

下面的代码

<h1>My Table</h1>

<style>
  #myTable tr {
    cursor: pointer;
  }

  #myTable {
      width: 100px;
  }

  #myTable tbody tr:hover {
    background: #d7d7d7 !important;
  }

  #myTable td {
    background: transparent !important;
      width: 100px;
  }

  #myTable {
    margin-top: 6px;
  }

  #myTable_paginate .prevIoUs,#myTable_paginate .next {
    padding: 2px 4px;
    margin: auto 10px;
  }
  
</style>
<table id="myTable"></table>


<script>
  (() => {
    return true;
  })();

  function convertmyTableData(jsonData = {data: [{'none': ''}]}) {
    const mapped = [];

    const keys = [];
    Object.keys(jsonData.data[0]).forEach(key => keys.push({'title': key}));

    for (let option of jsonData.data) {

      const mappedOption = [];
      for (let key of Object.keys(option)) {
        if (option[key]) {
          mappedOption.push(option[key]);
        }
      }
      if (mappedOption.length > 0) {
        mapped.push(mappedOption);
      }
    }

    $('#myTable').dataTable({
      data: mapped,columns: keys,"aoColumnDefs": [{
        "sTitle": "Test","aTargets": ["myTable_records"]
      },{
        "aTargets": [0],"bSortable": true,"mRender": function (value,type,full) {
          return value;
        }
      }]
    });

      $('#myTable').dataTable( {
          "autoWidth": true
      } );



    const clickRow = function (e) {
      var el = $('#myTable').dataTable();
      var iPos = el.fnGetPosition(this);
      var aData = el.fnGetData(iPos);

        $('#Input_1').val(aData[0]);
        $('#Input_2').val(aData[1]);
   
    }

    $("#myTable").on("click","tr",clickRow);

      $('#myTable').dataTable( {
          "autoWidth": true
      } );
  }



  function myTableLookup() {
    let ID = '2343242';

    fetch(`/spr/custom/ID/json/${ID}?myParameter=hello`)
    .then(response => {
      console.log(response.ok);
          return response.json();

    }).then(jsonData => {
          console.log(jsonData);
      convertmyTableData(jsonData);

    }).catch(err => {
      console.warn('Error!',err);
    });
  }

  myTableLookup();
</script>

$(“#myTable”)。on(“ click”,“ tr”,clickRow); -用于当我单击任何给定行时,它获取值并在屏幕上填充必填字段。

我希望这种情况在加载时自动发生,并且仅出现在第一行[0]。

谢谢。

解决方法

使用此代码

$("#myTable>tbody>tr:first").trigger('click');

或尝试通过setTimout

延迟单击
setTimeout(function(){ $("#myTable>tbody>tr:first").trigger('click'); },3000);

,

我认为您应该使用focus()方法。

$( document ).ready(function() {
    $("#myTable").focus();
    //or document.getElementById("myTable").focus();
   });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。