web-dev-qa-db-ja.com

フォームが_blankに送信された後、フォームページを更新するにはどうすればよいですか?

__blank_をターゲットとするHTMLフォームがあります。フォームが送信された後、そのページがリロードされるようにします。

だからここにいくつかのサンプルマークアップがあります:

_<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>
_

このフォームを送信すると、新しいウィンドウまたはタブでPOSTが_result.php_になります。これにより、フォームページがそのまま残ります。フォームページを再読み込みするか、少なくともすべてのフィールドをリセットします。

<form onsubmit="location.reload()"...onsubmit="window.location.reload()"を試しましたが、何も変わりませんでした。

助言がありますか?

(jqueryはありません)

11
Hal Carleton

window.location.reload()が機能しない理由はわかりません。すべきだと思う。しかし、これはうまくいくようです:

onsubmit="setTimeout(function () { window.location.reload(); }, 10)"
20
Explosion Pills

これを行うには2つの方法があります。1つは聞きたくないかもしれません。

最初:

フォームの初期化タグで、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
    }
?>

SECOND:

AJAX(javascriptまたはjQuery)を使用してフォームを「送信」してから、AJAX関数のコールバックで-必要な変更を続行します。新しいページへのリダイレクトを含む、ページを作成します。

0
cssyphus

受け入れられた答えは、私にとって望ましい結果を生み出しませんでした。

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

受け入れられた回答をonsubmitからonclickに変更すると、問題が解決しました。

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

望ましくない結果が生じる可能性があります。または、これは好ましくないかもしれませんが、私が望むように機能します。

0
user10434463