如何在PrimeFaces中的dataTable的seletedRow中设置对inputtext的关注?

时间:2014-04-13 03:58:24

标签: jsf primefaces datatable focus

场景是这样的:

有一个数据表有很多行,每行包含一个inputtext,表外有一个键盘,当用户点击键盘上的一个按钮时,selectedRow中的inputtext会被更新,我希望它是onfocus所以用户还可以使用键盘输入更多文本。

我使用p:commandButton作为键盘按钮,使用ajax submit在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事件设置inputtext焦点,但p:dataTable中似乎没有客户端API来获取所选行。

1 个答案:

答案 0 :(得分:1)

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

JS代码:

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

ele是我可以使用的jQuery组件,例如ele.focus()ele.keyup()