Javascript select()和focus()无法在从backing bean调用的primefaces表单中工作

时间:2016-10-08 23:18:40

标签: javascript primefaces

我使用<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>

一样接收焦点

0 个答案:

没有答案