0

わかりました。何時間もグーグルで検索しましたが、機能するものは何も見つかりませんでした。必死に助けが必要

次の要素を含むフォームがあります。

<form action="sendmail.php" method="post" name="enquiry">
    <table> 
        <tr>
            <td>Name:-</td> 
            <td><input type="text" name="name" /></td>
        </tr> 
        <tr>
            <td>Company:-</td>
            <td> <input type="text" name="company" /></td>
        </tr>
        <tr>
            <td>E-Mail:-</td>
            <td><input type="text" name="email" /></td> 
        </tr>
        <tr>
            <td>Contact:-</td>
           <td> <input type="text" name="contact" /></td>
        </tr>
        <tr>
            <td>Requirement:-</td>
            <td><textarea name="msg"></textarea></td>
        </tr>
    </table>
    <input type="submit" value="submit" onclick="return validation(this.form);">
    <input type="reset" value="Reset" />
</form>

そしてphpには次のような行があります:

<?php
if(mail($to, $subject,$message)) {
   echo "<SCRIPT LANGUAGE='JavaScript'>alert('Your Enquiry was sent successfully we  will get back to you shortly');
              window.location.href='javascript:history.go(-1)';
              document.enquiry.reset();
         </SCRIPT>";
}
?> 

次に、同じコードでメッセージが異なる「else」があります。

問題は、フォームページにリダイレクトするときに、フィールドにデータが残っていることです。私が好むのは、ユーザーがページに戻ったときにデータが入力されていないクリーンなフォームです。

私はjavascriptの初心者なので、理解しやすい修正を提案してみてください。

よろしくお願いします!

4

6 に答える 6

2

これは、履歴に戻っているためです。ブラウザは、前後に移動したときにフォームを記憶しています。

あなたがしていることは「通常の」ユーザーエクスペリエンスではありません。「sendmail.php」ファイルに感謝の意を表す見栄えの良いページを印刷してから、ユーザーがサイトの好きな場所に移動できるようにすることをお勧めします。

于 2012-10-25T10:35:16.210 に答える
1

あなたの問題はjavascriptコードにあります:

window.location.href='javascript:history.go(-1)';
document.enquiry.reset();

このコードを削除する

編集:

このコードを使用します:

if(mail($to, $subject,$message)){?>
    <SCRIPT LANGUAGE='JavaScript'>
    alert('Your Enquiry was sent successfully we  will get back to you shortly');
    window.location.href='/*YOUR FORM PAGE LINK*/';
    </SCRIPT>
<?php } 
于 2012-10-25T10:35:00.910 に答える
1

エドが言ったように、あなたは歴史に戻っており、ブラウザはそれを覚えています。

これを試して:

この行の代わりに:window.location.href='javascript:history.go(-1)';

書きます :window.location.href='RelativePathToActualForm';

于 2012-10-25T10:37:38.050 に答える
0

フォームの投稿を処理した後、別のページ(またはフォームに再度)にリダイレクトし、そこにメッセージを表示する必要があります。例:

php header("Location: form.php?formpostwassuccessful=1");

次にフォームページ

if(isset($_GET['formpostwassuccessful']))
  echo "Thank you. Your form was sent.";

投稿後のリダイレクトも参照してください。

于 2012-10-25T10:41:58.093 に答える
0

簡単な解決策:jqueryを使用するだけです-ページにjqueryを含めるには、headセクションで1行を使用します。

提供したjavascriptスニペットには次のものが含まれている必要があります。

window.location="theform_page_address" ;

それ以外の

window.location.href='javascript:history.go(-1)';
              document.enquiry.reset();

フォームページのアドレス:headセクションに次のjsスニペットを追加します。

<script type="text/javascript">
    $(document).ready(function(){


    $('input').val('');
    $('select').val('-1');

    $('textarea').val();

    });

</script>

編集:私はあなたのフォームが空白のデフォルト値を 持つ要素とデフォルトオプションの値として-1を持つ要素を持っているinputと仮定します。textareaselect

于 2012-10-25T10:48:25.043 に答える
0

まず、phpセッションベースのフラッシュメッセージの使用例を見てくださいhttp://mikeeverhart.net/php/session-based-flash-messages/

通常の流れ:

  1. ユーザーがフォームに入力します
  2. プレス提出
  3. phpスクリプトsendmail.phpがフォームを検証します
  4. 検証エラーが発生した場合[エラーメッセージの設定]
  5. メール送信エラーが発生した場合[エラーメッセージを設定]
  6. すべて問題がなければ[成功メッセージを設定]
  7. phpリダイレクトからフォーム表示ページに呼び出します。

[set error |successmessage]-上記のリンクを使用してメッセージを設定します。

フォームをレンダリングするたびに重要な部分になりました。メッセージがいくつかある場合は、設定されたメッセージを確認する必要があります。それらを表示します。

それらのメッセージはどのように機能しますか?メッセージをセッション($ _SESSION)配列に設定するだけで、メッセージが表示されると、メッセージはセッションから設定解除されます。

于 2012-10-25T10:49:30.613 に答える