使用window.open()具有过早提交表单的效果

时间:2018-07-12 04:18:28

标签: javascript asp.net-mvc-5

我有一个用ASp.Net MVC5编写的Web表单,用于收集用户的一些详细信息。但是,在让他们提交表单之前,我希望他们可以选择查看另一个网页(在新窗口或新选项卡中),以便在提交页面之前根据需要提供更多信息。为此,在Web表单上,我有一个带有以下按钮的表单:

<form action="/Application/MyAction" method="post" id="myForm">
    // various fields ...
    <button onclick="getMoreInfo()">More Information</button>
    <button type="button">Submit Form</button>
</form>

然后,在页面底部,我定义了以下javascript:

<script>
function getMoreInfo()
{
    var urlToUse = 'http://some-other-page.html';
    window.open(urlToUse);
    return false; // trying to stop the form submission from occurring
}
</script>

我的问题是,当单击此“更多信息”按钮时,它具有提交表单(我不想这样做)的效果-因为有一个单独的提交按钮来执行该任务。有没有一种方法可以使用按钮跳到另一页而不实际提交当前表单?

感谢堆,

大卫。

1 个答案:

答案 0 :(得分:0)

我发现这个问题的答案#3对我有帮助:

How do I cancel form submission in submit button onclick event?

我的解决方案是这样更改代码:

我将按钮代码更改如下:

<form action="/Application/MyAction" method="post" id="myForm">
    // various fields ...
    <button id="moreInformationButton" >More Information</button>
    <button type="button">Submit Form</button>
</form>

然后我将javascript更改如下:

$("#moreInformationButton").click(function (event) {
    event.preventDefault();  // This stops the submit form being triggered
    var urlToUse = 'http://some-other-page.html';
    window.open(urlToUse);  // open the help page
});

这使我可以打开另一个窗口或带有更多信息的标签,而无需实际提交表单。