R中的Datatable:在JavaScript的帮助下,使用KeyTable扩展从Datatable中读取标记的单元格
我还有一个问题。我使用带有keyTable扩展名的DataTable。 此扩展标记单个单元格,您可以使用箭头键在表格中导航 我想读出,在任何时候选择什么单元格。我认为最简单的方法是使用JavaScript,但我是JS的绝对初学者,所以你必须帮助我 代码式R中的Datatable:在JavaScript的帮助下,使用KeyTable扩展从Datatable中读取标记的单元格,javascript,r,shiny,datatables,dt,Javascript,R,Shiny,Datatables,Dt,我还有一个问题。我使用带有keyTable扩展名的DataTable。 此扩展标记单个单元格,您可以使用箭头键在表格中导航 我想读出,在任何时候选择什么单元格。我认为最简单的方法是使用JavaScript,但我是JS的绝对初学者,所以你必须帮助我 代码式 "table.on('key', function(e, datatable, key, cell, originalEvent){", " var targetName = originalEvent.targ
"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
是按键所在元素的类型。当您处于可编辑模式时,它是一个输入
。因此,如果您希望始终获取单元格信息,请删除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());",
" }",
" }",
"});"
如果我正确理解您想要的内容,我将尝试删除
关键焦点
事件处理程序中的&&targetName==“input”
。(你应该总是提供一个最小的可复制的例子,这样想帮助你的人就可以尝试一下)。这可能很容易!再次非常感谢您!