Javascript 达到最大字符数后自动将焦点更改为下一个输入字段

Javascript 达到最大字符数后自动将焦点更改为下一个输入字段,javascript,html,primefaces,xhtml,Javascript,Html,Primefaces,Xhtml,以下是我的xHTML代码: <div id="list"> <p:outputLabel styleClass="heading" value="#{msg['content.search.title']}" /> <p:outputLabel value="#{msg['content.search.bic']}" /> <p:

以下是我的xHTML代码:

<div id="list">
                    <p:outputLabel styleClass="heading" value="#{msg['content.search.title']}" />


                    <p:outputLabel value="#{msg['content.search.bic']}" />

                    <p:inputText styleClass="prefix" value="#{Controller.prefix}" maxlength="4" onkeyup="return this.value.length >= 4">

                    <p:ajax event="keyup" listener="#{Controller.check}"></p:ajax>
                        </p:inputText>

                    <p:inputText id="countryCode" widgetVar="countryCode" styleClass="countryCode" value="#{Controller.CountryCode}" maxlength="2">                 

<\div>
我想要的是,当我在前缀中输入4个字符时,焦点应自动转到下一个InputText字段,即CountryCode。我没有收到任何错误,输入4个字符后,我的backingbean方法被调用并成功运行,但是gui上的焦点没有改变

我怀疑,也许我在支持bean中的代码没有完成它应该做的事情,也许它没有找到CountryCode字段


这个问题与标记的问题不同之处在于,我无法在我的项目中创建一个单独的Jquery,因此没有Jquery。

类似的问题应该可以解决:

<div id="list">
    <p:outputLabel styleClass="heading" value="#{msg['content.search.title']}" />

    <p:outputLabel value="#{msg['content.search.bic']}" />

    <p:inputText styleClass="prefix" value="#{Controller.prefix}" maxlength="4" id="txtPrefix" onkeydown="if (document.getElementById('txtPrefix').value.length>=4) { document.getElementById('countryCode').focus(); return false; }">
        </p:inputText>

    <p:inputText id="countryCode" widgetVar="countryCode" styleClass="countryCode" value="#{Controller.CountryCode}" maxlength="2">                 
<\div>


在每个键上执行ajax调用在性能方面不是一件好事。如果你的
onkeyup=“return this.value.length>=4”
有效,为什么不在那里做,纯客户端。@JasperdeVries否其他问题使用JQuery。@Kukeltje你能告诉我怎么做吗?因为它应该只在输入4个值后触发。你能帮忙吗?请阅读其他问答。。。也是一个非jquery的答案。。。PrimeFaces使用jquery,所以您已经有了它。我不能使用单独的脚本。所以这对我不起作用。像“onkeyup=”if(this.value.length>=4){PF('countryCode').Focus();}”这样的东西不应该工作吗?我相应地编辑了答案。Ajax调用没有任何意义。这只会给你服务器负载,并免费使用带宽。我跳过删除它,编辑。
<div id="list">
    <p:outputLabel styleClass="heading" value="#{msg['content.search.title']}" />

    <p:outputLabel value="#{msg['content.search.bic']}" />

    <p:inputText styleClass="prefix" value="#{Controller.prefix}" maxlength="4" id="txtPrefix" onkeydown="if (document.getElementById('txtPrefix').value.length>=4) { document.getElementById('countryCode').focus(); return false; }">
        </p:inputText>

    <p:inputText id="countryCode" widgetVar="countryCode" styleClass="countryCode" value="#{Controller.CountryCode}" maxlength="2">                 
<\div>