2

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

我希望能够p:dataTable使用 JavaScript 将焦点设置在(单个)可选择的行上。

我检查了客户端 API 文档DataTable行单击处理程序的代码,我认为它与originRowIndexandcursorIndex属性有关。但是将它们设置为0(在 JavaScript 控制台中)不会触发焦点。此外,当我聚焦一行,然后聚焦 JavaScript 控制台时,焦点会丢失,因此很难弄清楚发生了什么。

然后我检查了keydown 处理程序的代码。这让我尝试了以下操作(再次在控制台上):

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

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

4

1 回答 1

2

诀窍是聚焦可聚焦的 TBODY。

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

但是您仍然会面临试图从控制台设置焦点的问题。请参阅无法在 Chrome 控制台中使用 javascript 设置焦点和光标以输入文本

于 2021-02-17T13:33:00.370 回答