我无法理解为什么这不起作用。
我在新标签页面中打开了一个表单,我想在提交时将其关闭:
<form name="form" id="form" method="post" enctype="multipart/form-data" >
//form inputs
<button accesskey="C" class="boton" onclick="form.submit(); alert('waiting...'); window.close()"> <u>A</u>djuntar</button>
</form>
当我删除window.close()时,表单已提交,但是当它出现在我的代码中时,它会显示警告但不会提交。
有什么不对吗?
答案 0 :(得分:0)
在事件处理函数运行完毕之前,不会提交表单。
alert
阻止所有内容的执行,直到对话框被解除。
close
关闭了一个窗口,因此无法将表单提交加载到其中,这将取消请求。
如果要关闭窗口,请不要指望它能够同时发送HTTP请求。
答案 1 :(得分:0)
您无需在新窗口(或标签页)中打开表单。 您可以在ajax中提交数据,也可以使用内部隐藏的iframe作为表单元素的target属性。这样,表单将在隐藏的内部元素中打开。 e.g:
<form id="eFrm" target="ifrm1">
</form>
<iframe id="ifrm1" name="ifrm1" style="display:none"></iframe>
答案 2 :(得分:-1)
你可能已经找到了一个解决方案,但无论如何我都会发布这个解决方案。
我正在使用Java servlet,但我认为每个表单提交都是一样的=&gt;能够选择在处理发布数据后必须显示哪个页面。
提交表单后,servlet中的doPost方法允许我说明在处理数据后我希望浏览器显示哪个URL。
所以,你可以做这些事情:
request.getRequestDispatcher ( "/ClosePopup.html" ).forward ( request, response );
然后还创建一个名为ClosePopup.html的文件,只有一个close()指令
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body onLoad = "window.close();">
</body>
</html>
这样,它就不会是您单击的按钮来触发弹出窗口的关闭,但是在提交表单后您将加载一个自毁页面。最终结果是相同的。
答案 3 :(得分:-2)
您无法通过window.close()
方法关闭任何窗口。由于window.close()
失败,因此永远不会提交表单。
Window.close()方法关闭当前窗口或窗口 它被称为。
仅允许为打开的窗口调用此方法 通过使用window.open()方法的脚本。如果窗口不是 由脚本打开,JavaScript中出现以下错误 控制台:脚本可能无法关闭脚本未打开的窗口。
https://developer.mozilla.org/en-US/docs/Web/API/Window/close
答案 4 :(得分:-2)
HTML:
<form name="form" id="form" method="post" enctype="multipart/form-data">
//form inputs
<button accesskey="C" class="boton" onclick="form.submit();" > <u>A</u>djuntar</button>
</form>
JS:
form.addEventListener("submit", myFunc);
function myFunc() {
alert('waiting...');
window.close()
}
她我们创建一个事件,并在提交后关闭窗口
如果要测试它,请在脚本标记中使用JS:)