如何使用 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,我认为它与 originRowIndex
和 cursorIndex
属性有关。但是将它们设置为 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');
但是您在尝试从控制台设置焦点时仍然会遇到问题。参见
PrimeFaces 具有出色的键盘支持。例如,参见 selectable p:dataTable
的展示。当您单击“单行单击”中的一行时 table,您可以使用箭头键导航行并使用回车键 select 焦点行。
我希望能够使用 JavaScript.
在(单个)selectablep:dataTable
中将焦点设置在一行上
我检查了 client side API documentation for DataTable
and the code of the row click handler,我认为它与 originRowIndex
和 cursorIndex
属性有关。但是将它们设置为 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');
但是您在尝试从控制台设置焦点时仍然会遇到问题。参见