如何将焦点设置在PrimeFaces中dataTable的selectedRow中的inputtext上



场景如下:

有一个数据表,有很多行,每行都包含一个输入文本,表外有一个小键盘,当用户单击小键盘上的按钮时,所选行中的输入文本将被更新,我希望它是聚焦的,这样用户也可以使用键盘输入更多的文本。

我使用p:commandButton作为键盘按钮,并使用ajax提交来设置bean中的selectedItem,并更新数据表以更改输入文本,但在那之后,焦点要么丢失,要么放在页面的第一个输入文本上。

我使用的是primeface 3.4。代码是这样的:

 <p:dataTable id="datatable1" var="item" value="#{bean.itemlist}" rowKey="#{item.id}"  rowIndexVar="rowIndex"
              widgetVar="datatableVar"  selection="#{bean.selectedItem}" selectionMode="single">  
  <p:column>  
        <p:inputText id="name" value="#{bean.selectedItem.name}"
 onfocus="datatableVar.unselectAllRows();datatableVar.selectRow(#{rowIndex})" >  
   </p:column>  
 ...
</p:dataTable>
 <p:commandButton value="1" update="datatable1" id="bt1"  
         actionListener="#{bean.appendItem('1')}" />

我想我可以使用p:commandButton的oncomplete事件来设置输入文本焦点,但在p:dataTable中似乎没有客户端API来获取所选行。

我最终使用jQuery选择器来选择inputText。在渲染的html代码中,所选行(tr)具有属性"aria-selected='true'"。

JS代码为:

var ele=$($("[aria-selected='true']").find('input').get(0));

ele是一个jQuery组件,我可以使用它进行操作,如ele.focus()ele.keyup()

相关内容

  • 没有找到相关文章

最新更新