【发布时间】:2020-10-27 03:56:30
【问题描述】:
我有一个包含多个
<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 中继器。
-
也不要使用
<p:ajax event="focus" oncomplete="select(this)"/>只关注你的inputNumber把onfocus="select(this)"因为看起来你只是想使用客户端Javascript而不是服务器端AJAX调用。 -
它似乎与change事件有关,以及它在侦听器调用它时在doReRender方法中的作用。您是否尝试过删除事件以缩小范围以了解问题?
-
非常感谢您的 cmets。我放了 onfocus="select(this)" 没有ajax,现在它可以工作了。 @Melloware
标签: jquery jsf primefaces