如何防止在update =@form上重新定位卷轴



我有一个较长的表格,客户必须垂直滚动屏幕才能查看所有字段。

但是,每当触发带有属性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,最近我避免更新完整表格,我更喜欢使用选择器。

希望这会有所帮助。

最新更新