【问题标题】:Liferay: Close popup on submit?Liferay:提交时关闭弹出窗口?
【发布时间】:2015-07-13 15:33:23
【问题描述】:

下面的代码我用来打开弹出窗口。我如何在提交时关闭相同的?

function popupCreation(url){
        AUI().use('liferay-util-window', 'aui-io-deprecated', 
        function(A) {
            modal=Liferay.Util.openWindow({
                dialog: {
                    id:'closeid',
                    centered: true,
                    modal: true,
                    width: 950,
                    height:750,
                },
                uri: '<%=editSettingsURL%>'
            });
        });
    }

【问题讨论】:

    标签: javascript liferay liferay-6


    【解决方案1】:

    此页面可能会有所帮助 - How to close a Dialog IFrame in Liferay 6.2

    如果你像这样定义你的模态窗口(比如说在 view.jsp 中):

    <aui:button name="openDialog" type="button" value="open-dialog" />
    
        <liferay-portlet:renderURL var="dialogURL" windowState="<%=LiferayWindowState.POP_UP.toString() %>">
            <liferay-portlet:param name="mvcPath" value="/dialog.jsp" />
        </liferay-portlet:renderURL>
        <aui:script use="liferay-util-window">
        A.one('#<portlet:namespace/>openDialog').on('click', function(event) {
            Liferay.Util.openWindow({
                dialog: {
                    centered: true,
                    height: 300,
                    modal: true,
                    width: 400
                },
                id: '<portlet:namespace/>dialog',
                title: '<liferay-ui:message key="i-am-the-dialog" />',
                uri: '<%=dialogURL %>'
            });
        });
    </aui:script>
    

    并在对话框页面 (dialog.jsp) 中创建按钮触发器(或在您的情况下为 onsubmit 事件侦听器):

    <aui:button name="closeDialog" type="button" value="close" />
    
    <aui:script use="aui-base">
        A.one('#<portlet:namespace/>closeDialog').on('click', function(event) {
            // Let's suppose that "data" contains the processing results
            var data = ...
            // Invoke a function with processgin results and dialog id
            Liferay.Util.getOpener().<portlet:namespace/>closePopup(data, '<portlet:namespace/>dialog');
        });
    </aui:script>
    

    您将通过 getOpener() 函数获得打开对话框的窗口。在创建对话框的页面(view.jsp)中,您必须像这样提供 closePopup 函数:

    <aui:script>
        Liferay.provide(
            window,
            '<portlet:namespace/>closePopup',
            function(data, dialogId) {
                var A = AUI();
    
                // Here you can use "data" parameter
    
                // Closing the dialog
                var dialog = Liferay.Util.Window.getById(dialogId);
                dialog.destroy();
            },
            ['liferay-util-window']
        );
    </aui:script>
    

    【讨论】:

      【解决方案2】:

      试试这个

      Liferay.Util.getOpener().<portlet:namespace />closePopup('<portlet:namespace />YOUR_POPUP_ID')
      

      【讨论】:

        【解决方案3】:

        请尝试以下代码关闭弹出窗口:

        AUI().use('liferay-util-window', 'aui-io-deprecated', 
        function(A) {
            modal=Liferay.Util.openWindow({
                dialog: {
                    id:'closeid',
                    centered: true,
                    modal: true,
                    width: 950,
                    height:750,
                },
                uri: '<%=editSettingsURL%>'
            });
        });
        Liferay.provide(
           window,
          'closePopup',
          function(popupIdToClose) {
               var dialog = Liferay.Util.getWindow(popupIdToClose);
               dialog.destroy(); // You can try toggle/hide whatever You want
              },
             ['aui-base','aui-dialog','aui-dialog-iframe']
             );
          }); 
         });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-10
          相关资源
          最近更新 更多