Javascript JS在控制台中工作,但在代码中不工作

Javascript JS在控制台中工作,但在代码中不工作,javascript,jquery,modal-dialog,liferay,Javascript,Jquery,Modal Dialog,Liferay,我有一个按钮,它用简单的形式调用模态窗口 <aui:button-row> <a style="float: left" onclick="ITD.robomarket.activateKeyModalWindowFunction( '${activateKeyURL}', '<%=LanguageUtil.get(pageContext, "key-activating")%>', '400', '334')" class="btn

我有一个按钮,它用简单的形式调用模态窗口

<aui:button-row>
        <a style="float: left" onclick="ITD.robomarket.activateKeyModalWindowFunction(
        '${activateKeyURL}', '<%=LanguageUtil.get(pageContext, "key-activating")%>', '400', '334')" class="btn btn-green"> </a>
</aui:button-row>
我在.jsp中调用这个函数:

<script>
    $(document).ready(function() {
        closeModal();
    });
</script>

问题是这不起作用,但当我在控制台中写这行代码时,模式窗口关闭了!有什么问题吗

在de DOM准备就绪后,您正在调用closeModal方法。这意味着您要求在弹出窗口打开之前关闭

不清楚您在弹出窗口中做了什么。如果是部分提交,比如ajax调用或类似的调用,则需要在收到响应并处理返回的数据后调用closeModal


否则,如果您提交一个完整提交、一个完整重新加载、导航到一个新页面,您将经历一个全新的呈现阶段。模式窗口将与当前呈现页面中的所有其他内容不匹配。

您必须从打开模式的JSP调用closeModal。 例如,A.jsp有一个链接,该链接在模式对话框中打开B.jsp,然后您希望在提交表单时关闭B.jsp

下面是一个可能的实现:

<portlet:actionURL name="/submitForm" var="submitFormURL">
    <portlet:param name="action" value="submitForm" />
</portlet:actionURL>

<aui:form action="<%= submitFormURL %>" method="post" name="fm"  onSubmit='<%= "event.preventDefault(); " + renderResponse.getNamespace() + "submitForm();" %>'>
...the form

<aui:button name="submitForm" type="submit"/>

</aui:form>
在A.jsp中:

在A.jsp的底部:

<aui:script>
Liferay.provide(window, 'closePopup', function(dialogId) {
        var A = AUI();
        var dialogId = A.one('div.dialog-iframe-modal').get("id");
        var dialog = Liferay.Util.Window.getById(dialogId);
        dialog.destroy();
});
</aui:script>
然后在B.jsp中

要关闭对话框,您必须对开场白说,下面是一个可能的实现:

<portlet:actionURL name="/submitForm" var="submitFormURL">
    <portlet:param name="action" value="submitForm" />
</portlet:actionURL>

<aui:form action="<%= submitFormURL %>" method="post" name="fm"  onSubmit='<%= "event.preventDefault(); " + renderResponse.getNamespace() + "submitForm();" %>'>
...the form

<aui:button name="submitForm" type="submit"/>

</aui:form>
在B.jsp页面的底部:

希望能有帮助

问候
阿诺不管用,当当,我讨厌那些话,请解释一下你期望会发生什么以及会发生什么。无论如何,您正在解析DOM之后调用closeModal,很可能当时没有显示该模式。我想在提交后关闭此模式窗口,提交时从何处调用closeModal?@SajibKhan我在模式窗口中使用该表单从jsp调用closeModal。@Teemu我希望在提交表单后关闭模式窗口。是的,但是会发生什么?它不起作用,不是那个问题的答案。
<portlet:actionURL name="/submitForm" var="submitFormURL">
    <portlet:param name="action" value="submitForm" />
</portlet:actionURL>

<aui:form action="<%= submitFormURL %>" method="post" name="fm"  onSubmit='<%= "event.preventDefault(); " + renderResponse.getNamespace() + "submitForm();" %>'>
...the form

<aui:button name="submitForm" type="submit"/>

</aui:form>
<script>
    function <portlet:namespace/>submitForm(){
        AUI().use('aui-io-request', function(A) {
            var url = '<%=submitFormURL.toString()%>';
            A.io.request(
                url,
                {
                    method: 'POST',
                    form: {id: '<portlet:namespace/>fm'},
                    on: {
                        success: function() {
                            Liferay.Util.getOpener().closePopup('dialog');
                       }
                   }
               }
           );
        });
    }
</script>