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>