Javascript 如何自动';单击';加载时数据表中的第一行
我有一个Jquery数据表,我正在将SQL数据加载到该数据表中,这将显示X个包含该数据的行,然后我可以单击数据表上的一行,并使用Jquery在用户屏幕上填充输入。现在,我希望能够让DataTable在加载时自动“单击”第一行,这样它就可以用第一个值填充这些输入(减少人工交互) 代码如下:Javascript 如何自动';单击';加载时数据表中的第一行,javascript,jquery,datatable,datatables,Javascript,Jquery,Datatable,Datatables,我有一个Jquery数据表,我正在将SQL数据加载到该数据表中,这将显示X个包含该数据的行,然后我可以单击数据表上的一行,并使用Jquery在用户屏幕上填充输入。现在,我希望能够让DataTable在加载时自动“单击”第一行,这样它就可以用第一个值填充这些输入(减少人工交互) 代码如下: <h1>My Table</h1> <style> #myTable tr { cursor: pointer; } #myTable {
<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 tr{
光标:指针;
}
#我的桌子{
宽度:100px;
}
#myTable tbody tr:悬停{
背景:#d7d7d7!重要;
}
#myTable td{
背景:透明!重要;
宽度:100px;
}
#我的桌子{
边缘顶部:6px;
}
#myTable_paginate.上一页,
#myTable_paginate.下一步{
填充物:2px4px;
保证金:自动10px;
}
(() => {
返回true;
})();
函数convertmyTableData(jsonData={data:[{'none':''}]}){
常量映射=[];
常量键=[];
Object.keys(jsonData.data[0]).forEach(key=>keys.push({'title':key}));
for(让jsonData.data的选项){
常量mappedpoption=[];
for(让对象的键。键(选项)){
如果(选项[键]){
mappedpoption.push(选项[key]);
}
}
如果(mappedpoption.length>0){
mapped.push(mappedpoption);
}
}
$('#myTable')。数据表({
数据:地图,
列:键,
“aoColumnDefs”:[{
“针”:“测试”
,“aTargets”:[“myTable_记录”]
}, {
“目标”:[0]
,“可移植”:真
,“mRender”:函数(值、类型、完整){
返回值;
}
}]
});
$('#myTable')。数据表({
“自动宽度”:真
} );
常量clickRow=函数(e){
var el=$('#myTable').dataTable();
var iPos=el.fnGetPosition(本);
var aData=el.fnGetData(IPO);
$('#Input_1').val(aData[0]);
$('#Input_2').val(aData[1]);
}
$(“#我的表格”)。在(“单击”、“tr”和“单击行”);
$('#myTable')。数据表({
“自动宽度”:真
} );
}
函数myTableLookup(){
设ID='2343242';
fetch(`/spr/custom/ID/json/${ID}?myParameter=hello`)
。然后(响应=>{
log(response.ok);
返回response.json();
}).然后(jsonData=>{
console.log(jsonData);
convertmyTableData(jsonData);
}).catch(错误=>{
console.warn('Error!',err);
});
}
myTableLookup();
$(“#我的表格”)。在(“单击”、“tr”,单击行);-用于当我单击任何给定行时,它获取值并填充屏幕上的必填字段
我希望这种情况在加载时自动发生,并且只发生在第一行[0]
谢谢。我认为您应该使用focus()方法 使用此代码
$("#myTable>tbody>tr:first").trigger('click');
或者尝试使用setTimout
setTimeout(function(){ $("#myTable>tbody>tr:first").trigger('click'); }, 3000);
setTimeout(function(){ $("#myTable>tbody>tr:first").trigger('click'); }, 3000);