0

私は比較的単純な質問をしますが、それはうまくいけば簡単な答えを伴うでしょう。私は現在、スクロールダウンタイプのウェブサイトを開発しています。すべてが1ページにあります、あなたは1つを知っています。私の「連絡先」セクションはページの一番下にあり、もちろんPHPを使用してフォームの検証を行っています。検証部分は機能しますが、問題はありません。ただし、検証に失敗した場合、ブラウザはページの先頭に戻ります。これは明らかな理由で不便です。

'header()'関数を認識しています。この関数を使用すると、エラーが発生した場合にページの下部に留まることができます。例として、DOCTYPEの前のHTMLページの上部に、次のように書くことができます。

if ($errors) {
header(Location: 'somelocation.php#contact');
}

これは機能しますが、何らかの理由で、HTMLに埋め込まれたPHPが機能しなくなります。エラーが発生した場合は、PHPを使用して次のページに表示します。

<h2>Contact</h2>
<?php if($errors) { ?>
<p class="warning">Please fix the errors</p>
<?php } ?>

「エラーを修正してください」は表示されません。ただし、ページからヘッダー関数を削除すると表示されるので、問題が関連していることがわかります。したがって、基本的に、header()関数を削除すると、ページが一番上に戻り、エラーが表示されます。header()関数を保持すると、ページは正しく表示されたままになりますが、エラーは表示されません。

または、フォームが正しく検証され、「ヘッダー」関数が呼び出され、ページの下部にとどまり、「ありがとうございます」というHTMLを表示したい場合に、この質問をすることもできます。フォームが送信されました'?(「ありがとう」のページなどには行きたくありません。同じ場所にとどまり、ページに「ありがとう」を付けてください)同じ問題が発生したと思います。これに対する解決策はありますか?

前もって感謝します!

4

2 に答える 2

2

ヘッダーで場所を指定すると、ブラウザーはその URI にリダイレクトされます。これは、出力がブラウザに送信される前に呼び出されています。

ページがリセットされると$errors == false、その段落は表示されません。

ここでは、AJAX、またはサーバー側とクライアント側のコードの混合を統合する必要があるようです。

于 2012-12-07T22:43:02.073 に答える
1

フォームを検証するための非常にシンプルで効率的な方法は、jquery を使用することです。これの完璧な例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
 <style type="text/css">
* { font-family: Verdana; font-size: 96%; }
label { width: 10em; float: left; }
label.error { float: none; color: red; padding-left: .5em; vertical-align: top; }
p { clear: both; }
.submit { margin-left: 12em; }
 em { font-weight: bold; padding-right: 1em; vertical-align: top; }
 </style>
 <script>
  $(document).ready(function(){
    $("#commentForm").validate();
   });
   </script>

 </head>
 <body>


 <form class="cmxform" id="commentForm" method="get" action="">
 <fieldset>
  <legend>A simple comment form with submit validation and default messages</legend>
  <p>
 <label for="cname">Name</label>
 <em>*</em><input id="cname" name="name" size="25" class="required" minlength="2" />
  </p>
  <p>
 <label for="cemail">E-Mail</label>
 <em>*</em><input id="cemail" name="email" size="25"  class="required email" />
  </p>
  <p>
 <label for="curl">URL</label>
 <em>  </em><input id="curl" name="url" size="25"  class="url" value="" />
     </p>
   <p>
 <label for="ccomment">Your comment</label>
 <em>*</em><textarea id="ccomment" name="comment" cols="22"  class="required"></textarea>
  </p>
   <p>
 <input class="submit" type="submit" value="Submit"/>
  </p>
  </fieldset>
  </form>
 </body>
 </html>

ハッピーコーディング!!!

于 2012-12-08T06:14:24.607 に答える