我有一个较长的表格,客户必须垂直滚动屏幕才能查看所有字段。
但是,每当触发带有属性update=@form
的组件之一时,屏幕都会回到最高位置。
所以,问题是:
-
有一种方法可以将滚动条保持在
update=@form
之后的位置?
重要:仅在第一个update=@form
中回到顶部,之后,屏幕保留了当前位置。
我不确定这是一个错误还是我在做错事会导致这种行为。
是的,我真的必须更新整个表格
,例如
<p:commandButton id="btnVerifyLogin" update="@form" value="Verify"
actionListener="#{demandController.VerifyLogin()} />
我以前有这个问题,我必须更新整个表格。
我了解到的是,当我更新包含已按下按钮的表单(例如您的验证按钮)时,浏览器以某种方式失去了对该按钮的关注点,然后滚动回到顶部。
我提出了解决方法。
<p:commandButton id="btnVerifyLogin"
update="@(form :not(#formId\:btnVerifyLogin))"
value="Verify"
actionListener="#{demandController.VerifyLogin()} />
基本上我更新表单,但没有更新按钮,这样,浏览器将保持滚动状态。
其他人建议onstart
我们可以调用var scroll = $(window).scrollTop();
以保留我们的滚动位置,而oncomplete
我们调用$("html").scrollTop(scroll);
,但这不起作用,因为oncomplete
不会触发,因为该按钮在表单内部更新!<<<<<<<<<<<<<<<<<</p>
再次仅适用于PrimeFaces 4,最近我避免更新完整表格,我更喜欢使用选择器。
希望这会有所帮助。