【问题标题】:Focus auto jump between several <p:inputNumber>焦点在几个 <p:inputNumber> 之间自动跳转
【发布时间】:2020-10-27 03:56:30
【问题描述】:

我有一个包含多个 (Primefaces) 的网络 form 有几个 (Primefaces)

示例

<p:inputNumber id="sbAddXm" value="#{point.xm}"
           styleClass="coordinate-field"
           maxlength="2"
           inputStyle="margin: 0 0 7px 0; font-size: 16px;"
           autocomplete="off"
           onkeyup="clearError(this)"
           decimalPlaces="0" thousandSeparator=""
           validator="fractionNumberValidator">
<p:keyFilter mask="pint" preventPaste="false" />
<f:attribute name="minimum" value="0"/>
<f:attribute name="maximum" value="59"/>
<f:attribute name="summary" value="Ошибка: "/>
<f:attribute name="detail" value="«Долгота - минуты» должно быть число от 0 до 59"/>
<p:ajax event="focus" oncomplete="select(this)"/>
<p:ajax event="change" listener="#{editEntityView.doReRender}"/>
<f:ajax event="keyup" render="addOrEditSubsoilBorderModal:SBmessage
                                addOrEditSubsoilBorderModal:addSubsoilBorderSaveBtn
                                addOrEditSubsoilBorderModal:editSubsoilBorderSaveBtn"/>

当我尝试填充多个输入时出现问题(通过按 Tab 或鼠标单击字段在输入之间切换)。

问题是:焦点开始循环在输入字段之间自动跳转。 如果我按 F8 在 Chrome 调试器中暂停脚本,我会在 jQuery 的某个地方看到循环,但我没有以这种形式使用 jQuery。

【问题讨论】:

  • 试过最新版本的 PrimeFaces 吗?我注意到您使用的是 7。另外,请添加 minimal reproducible example。您似乎正在使用某种可能与此处相关的 UI 中继器。
  • 也不要使用&lt;p:ajax event="focus" oncomplete="select(this)"/&gt; 只关注你的inputNumberonfocus="select(this)"因为看起来你只是想使用客户端Javascript而不是服务器端AJAX调用。
  • 它似乎与change事件有关,以及它在侦听器调用它时在doReRender方法中的作用。您是否尝试过删除事件以缩小范围以了解问题?
  • 非常感谢您的 cmets。我放了 onfocus="select(this)" 没有ajax,现在它可以工作了。 @Melloware

标签: jquery jsf primefaces


【解决方案1】:

其实这是解决问题的方法:

也不要使用 只关注你的 inputNumber put onfocus="select(this)" 因为看起来你只是想使用客户端 Javascript 而不是服务器端 AJAX 调用。 – 梅洛韦尔

谢谢!

【讨论】:

  • 没问题,很高兴我能提供帮助!
猜你喜欢
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-11
相关资源
最近更新 更多