如何使用 JavaScript 聚焦 p:dataTable 单个可选行

How to focus a p:dataTable single selectable row using JavaScript

PrimeFaces 具有出色的键盘支持。例如,参见 selectable p:dataTable 的展示。当您单击“单行单击”中的一行时 table,您可以使用箭头键导航行并使用回车键 select 焦点行。

我希望能够使用 JavaScript.

在(单个)selectable p:dataTable 中将焦点设置在一行上

我检查了 client side API documentation for DataTable and the code of the row click handler,我认为它与 originRowIndexcursorIndex 属性有关。但是将它们设置为 0(在 JavaScript 控制台中)不会触发焦点。此外,当我聚焦一行,然后聚焦 JavaScript 控制台时,焦点会丢失,因此很难弄清楚发生了什么。

然后我检查了code of the keydown handler。这让我尝试了以下操作(再次在控制台上):

var widget = PF('widget');
row = $('tbody tr', widget.jq).eq(0);
widget.focusedRow = row;
widget.highlightFocusedRow();
row.focus();

这将突出显示第一行,但未设置焦点。我想我已经接近了,但仍然存在焦点问题。

诀窍是聚焦可聚焦的 TBODY。

widget.getFocusableTbody().trigger('focus');

但是您在尝试从控制台设置焦点时仍然会遇到问题。参见