12

我有一个针对_blank. 我希望表单所在的页面在提交后重新加载。

所以这里有一些示例标记:

<form method="POST" action="result.php" target="_blank">
    <label for="name">Name:</label>
    <input type="text" name="name" />

    <label for="email">Email:</label>
    <input type="email" name="email" />

    <input type="submit" value="submit" />
</form>

因此,当您提交此表单时,它将POSTresult.php新窗口或选项卡中。这使表单页面保持原样。我希望重新加载表单页面,或者至少重置所有字段。

我也试过<form onsubmit="location.reload()"...了,onsubmit="window.location.reload()"但没有任何改变。

有什么建议么?

(请不要使用jquery)

4

5 回答 5

25

不知道为什么window.location.reload()不起作用。我认为应该。但是,这似乎确实有效:

onsubmit="setTimeout(function () { window.location.reload(); }, 10)"
于 2013-09-20T15:46:19.930 回答
1

有两种方法可以做到这一点,一种您可能不想听到。

第一的:

在表单 init 标记中,如果您设置,action=""则表单将提交到同一页面(自身)。

<form action="" method="post">

这允许您将服务器端代码添加到页面顶部,如下所示(例如使用 PHP):

<?php
    If (empty($_POST)===false) {
        //server side scripting to handle the submitted form
    }else{
?>
    //HTML to create/show the page with form for user input
<?php
    //Close the if statement
    }
?>

第二:

使用 AJAX(javascript 或 jQuery)“提交”表单,然后 - 在 AJAX 函数的回调中 - 继续对页面进行任何更改,包括重定向到新页面。

于 2013-09-20T15:46:17.797 回答
1

接受的答案并没有产生我想要的结果。

Accepted answer:
onsubmit="setTimeout(function () { window.location.reload(); }, 10)"

将接受的答案从 onsubmit 更改为 onclick 确实解决了我的问题;

Worked for me:
onclick="setTimeout(function () { window.location.reload(); }, 3)"

可能会有不希望的结果,或者这可能不是首选,但它可以按我的意愿执行。

于 2019-06-11T21:30:55.877 回答
0

如果将回调传递给 onsubmit 事件属性,它应该可以工作。例如,

(传统匿名函数)

onsubmit="function() {location.reload()}"

或者

(箭头函数)

onsubmit="() => location.reload()"
于 2021-09-29T22:54:54.970 回答
-2
location.refresh(true);

会有所帮助

于 2014-11-28T14:17:25.180 回答