Javascript 提交表单并关闭窗口

Javascript 提交表单并关闭窗口,javascript,html,forms,window,Javascript,Html,Forms,Window,我不明白这为什么不起作用 我在“新建”选项卡中打开了一个表单,提交时要将其关闭: <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()"> &l

我不明白这为什么不起作用

我在“新建”选项卡中打开了一个表单,提交时要将其关闭:

<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()时,表单被提交,但当它出现在我的代码中时,它会显示警报,但不会提交


有什么问题吗?

在事件处理程序函数完成运行之前,不会提交表单

警报
将阻止所有操作的执行,直到对话框关闭

close
关闭窗口,因此无处加载表单提交,从而取消请求



如果你要关闭一个窗口,不要期望它能够同时发送HTTP请求。

你可能已经找到了解决方案,但我还是为将来遇到同样问题的人发布了这篇文章

我使用的是Java servlet,但我认为这与每个表单提交=>都是一样的,可以选择在处理发布的数据后必须显示哪个页面

提交表单后,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>


这样,您就不会点击按钮来触发弹出窗口的关闭,而是在表单提交后加载一个自毁页面。最终结果相同。

您不必在新窗口(或选项卡)中打开表单。 您可以在ajax中提交数据,也可以使用内部隐藏的iframe作为表单元素的目标属性。这样,窗体将在隐藏的内部元素中打开。e、 g:

<form id="eFrm" target="ifrm1">
</form>
<iframe id="ifrm1" name="ifrm1" style="display:none"></iframe>


您是否正在使用JS打开窗口?我不相信你可以只关闭任何旧窗口,它必须是你创建的窗口(作为安全措施),我也不确定你是否可以用JS关闭选项卡,尽管
。close()
用于工作的按钮可能只关闭它打开的窗口。请参阅
https://developer.mozilla.org/de/docs/Web/API/Window/close
onclick=“form.submit();alert('waiting…);window.close();“@KinjalGohil-这是问题中已经出现的代码单击提交按钮时调用
form.submit()
是多余的(提交按钮仍会触发表单提交).对于投反对票的人:出了什么问题?这对我来说是可行的,但是如果你没有得到同样的结果,那么也许我可以根据我发布的内容想出一个可以应用于更多情况的解决方案