对话框组件中的primefaces日历问题

JDV*_*DVB 5 html css jsf primefaces

您好,我一直在寻找解决此问题的方法已有一段时间了,但似乎找不到解决方法。希望你们中的一位能帮助我。

我在一个对话框组件中有一个primefaces(v6.2,omega 主题)日历组件(弹出,不是内联)。打开对话框并单击日历输入字段时,会显示日历弹出窗口。我希望它做的是让它在输入字段旁边弹出(几乎是对话框之外的常规行为)。然而,我面临的问题是,当我向下滚动页面并单击输入组件时,弹出窗口将显示但与输入字段相关的特定偏移量。以下屏幕截图说明了该问题。

第一张照片

第二张照片

这是我的代码:

<p:dialog id="dialog"
          widgetVar="dialog"
          modal="true">
    <p:panel id="panel">
        <p:outputPanel id="outputPanel">
            <p:panelGrid columns="2" layout="grid"
                         columnClasses="ui-grid-col-3, ui-grid-col-4"
                         styleClass="ui-noborder" width="100%">
                <p:outputLabel for="date" value="#{msg.date}"/>
                <p:calendar id="date" value="#{date}"
                            navigator="true" mask="true" pattern="dd/MM/yyyy"/>
            </p:panelGrid>
        </p:outputPanel>
    </p:panel>
....
</p:dialog>
Run Code Online (Sandbox Code Playgroud)

我对 CSS 不太擅长,所以希望这是一个简单的解决方案,但遗憾的是我自己无法弄清楚。

小智 1

截至 2021 年 3 月,此问题尚未修复

https://github.com/primefaces/primefaces/issues/3868
https://github.com/primefaces/primefaces/issues/5740
https://github.com/primefaces/primefaces/issues/6583

作为我的案例的解决方法,我把

<p:dialog blockScroll="true">
Run Code Online (Sandbox Code Playgroud)

确保触发对话框的按钮具有

window.scrollTo(0,0);
Run Code Online (Sandbox Code Playgroud)