【问题标题】:Automatically change focus to next input field after reaching maximum characters [duplicate]达到最大字符数后自动将焦点更改到下一个输入字段[重复]
【发布时间】:2017-10-30 16:19:51
【问题描述】:

这是我的 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>

我的 java backing bean 函数如下所示:

public String check()
    {
        RequestContext.getCurrentInstance().execute("list:countryCode.focus();");
        return "";
    }

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

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

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

【问题讨论】:

  • 对每个按键进行 ajax 调用在性能方面并不是一件好事。如果您的 onkeyup="return this.value.length &gt;= 4" 有效,为什么不在那里做呢,纯客户端。
  • @JasperdeVries 没有其他问题使用 JQuery。
  • @Kukeltje 你能告诉我怎么做吗?因为它应该只在输入 4 个值后触发。你能帮忙吗?
  • 阅读其他问答...也是非 jquery 答案...并且 PrimeFaces 使用 jquery,所以您已经拥有了...

标签: javascript html primefaces xhtml


【解决方案1】:

类似的东西应该可以工作:

<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>

【讨论】:

  • 我不能使用单独的脚本。所以这对我不起作用。 'onkeyup="if(this.value.length >= 4) {PF('countryCode').Focus();}"' 之类的东西不应该起作用吗?
  • 我相应地编辑了答案。
  • Ajax 调用没有任何意义。这只会给你服务器负载,并没有使用带宽。
  • 我跳过删除它,已编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 2010-12-29
  • 2014-08-17
  • 2023-04-07
  • 2022-08-23
  • 1970-01-01
相关资源
最近更新 更多