我使用<p:commandButton>
执行某些服务器端代码,如果出现某个错误,我想将焦点设置为<p:inputText>
并选择其中的文字。
因此,如果在服务器端检测到错误,我通过Primefaces Requestcontext调用javascript函数:
RequestContext context = RequestContext.getCurrentInstance();
context.execute("onError();");
编辑:
<h:head>
<script type="text/javascript">
function onError()
{
document.getElementById("myform:efID").focus();
document.getElementById("myform:efID").value = "Hello";
document.getElementById("myform:efID").select();
}
</script>
</h:head>
<h:body>
<div style="width: 700px">
<h:form id="myform">
<p:panel id="basic" header="Search for player">
<!--<p:focus context="basic"/>-->
<p:inputText id="efLastname" tabindex="1" value="#{PlayerSearchView.lastname}"/>
<p:inputText id="efFirstname" tabindex="2" value="#{PlayerSearchView.firstname}" />
<p:inputText id="efID" tabindex="3" value="#{PlayerSearchView.playerId}" />
<p:commandButton value="Add player" id="btnPlayerAdd" actionListener="#{PlayerSearchView.buttonAddPlayerAction}" update="pdatatable @parent" icon="ui-icon-plus" />
</p:panel>
</h:form>
<p:dataTable id="pdatatable"> ... </p:dataTable>
</div>
</h:body>
结果是输入字段接收到文本&#34; Hello&#34;但它没有焦点,文字也没有被选中。
奇怪的是:当我插入<p:focus>
时,我可以看到执行了select(),然后表单的第一个元素像<p:focus>