R Shiny 中的数据表:在 JavaScript 的帮助下,使用 KeyTable 扩展从数据表中读出标记的单元格

Datatable in R Shiny: Read out marked cell from datatable with the KeyTable Extension with the help of JavaScript

我还有一个 JavaScript 问题。我使用带有 keyTable 扩展名的 DataTable。 此扩展标记单个单元格,您可以使用箭头键在 table 中导航。

我要读出来,什么单元格随时选中。我认为最简单的方法是使用 JavaScript,但我是 JS 的绝对初学者,所以你必须帮助我。

代码如

"table.on('key', function(e, datatable, key, cell, originalEvent){",
"  var targetName = originalEvent.target.localName;",
"  if(key == 13 && targetName == 'body'){",
"      Shiny.setInputValue('Ausgaben_zelle_aenderung', cell.node());",
"  }",
"});",
"table.on('key-focus', function(e, datatable, cell, originalEvent){",
"  var targetName = originalEvent.target.localName;",
"  var type = originalEvent.type;",
"  if(type == 'keydown' && targetName == 'input'){",
"    if([9,13,37,38,39,40].indexOf(originalEvent.keyCode) > -1){",
"      Shiny.setInputValue('Ausgaben_zelle_aenderung', cell.node());",
"    }",
"  }",
"});"

在我处于编辑模式时向我提供选择了哪个单元格的信息。这行得通。我想在不更改值的情况下修改此代码以获取单元格信息。所以我尝试修改代码,但代码像

"table.on('key', function(e, datatable, key, cell, originalEvent){",
"  if([9,13,37,38,39,40].indexOf(key) > -1){",
"      Shiny.setInputValue('test1', cell.node());",
"  }",
"});"

不工作。你能帮帮我吗?

谨致问候 舍夫科赫

在此代码中:

"table.on('key-focus', function(e, datatable, cell, originalEvent){",
"  var targetName = originalEvent.target.localName;",
"  var type = originalEvent.type;",
"  if(type == 'keydown' && targetName == 'input'){",
"    if([9,13,37,38,39,40].indexOf(originalEvent.keyCode) > -1){",
"      Shiny.setInputValue('Ausgaben_zelle_aenderung', cell.node());",
"    }",
"  }",
"});"

targetName 是按下键的元素的类型。当您处于可编辑模式时,它是一个 input。因此,如果您希望始终获取单元格信息,请删除 targetName == 'input' 测试:

"table.on('key-focus', function(e, datatable, cell, originalEvent){",
"  var type = originalEvent.type;",
"  if(type == 'keydown'){",
"    if([9,13,37,38,39,40].indexOf(originalEvent.keyCode) > -1){",
"      Shiny.setInputValue('Ausgaben_zelle_aenderung', cell.node());",
"    }",
"  }",
"});"