如何防止表格发布后新窗口/标签打开

时间:2014-02-13 21:28:33

标签: html forms post

我有一个表单提交,如:

<form target="_blank" id="discussionForm" method="POST" enctype="multipart/form-data" action="<%=discussionURL%>">

然后我在最后有一个提交按钮。这是有效的,它发布到我的数据库,但它打开一个新的选项卡,其中包含我用于发布到数据库的服务的URL。我不希望打开新标签。我试过玩不同的目标,但我认为_blank会起作用。有什么建议?

4 个答案:

答案 0 :(得分:4)

删除target属性,它应该没问题。

target="_blank"实际上意味着它应该在新的标签/窗口中打开。

Documentation(请务必先阅读文档)

答案 1 :(得分:1)

如果您希望显示此表单的提交内容,但是在另一个page / container _blank|_self|_parent|_top|framename上显示,则我想使用此属性,我想它是在当时构建的当人们用frames编写标记给它一种html支持时,现在使用/需要它是非常奇怪的。

“target属性指定一个名称或关键字,指示在提交表单后显示收到的响应的位置。” - W3Schools

答案 2 :(得分:0)

如果某人没有target属性,他们可以使用以下JS添加onclickonkeypress属性,如下所示:

<form action="/Account/Login" class="form" method="post" onclick="return event.shiftKey !== true;" onkeypress="return !(event.keyCode === 13 && event.shiftKey);"> </form>

onclick过滤掉任何“shift + click”。 onkeypress阻止'shift + enter'。

答案 3 :(得分:0)

我在这里的thread之一中添加了一个解决方案:

最近,我了解了这种情况,并进行了大量研究以查找黑客/解决方案。

解决方案-如果您可以每次放置一个窗口名称并引用相同的名称,那么浏览器将确保打开尚未打开的新选项卡,否则将刷新窗口。

示例代码段:Demo JSfiddle here

<form id="myForm" action="<URL>" method="POST" target="_blank" onsubmit="target_popup(this)">
    First name: <input type="text" name="fname"/><br/>
    Last name: <input type="text" name="lname"/><br/>
    <button type="submit" id="btnTest"> Submit</button>
</form>


<script>
var target_popup = function(form) {
    window.open('',//URL should be blank so that it will take form attributes.
                'UniqueWindowName', //window name
                'width=400,height=400,resizeable,scrollbars');
    form.target = 'UniqueWindowName';
}
</script>

请参阅我的blog了解更多详情