0

我有一个听起来相对简单的问题,希望能得到一个简单的答案。我目前正在开发一个向下滚动类型的网站;一切都在一页上,你知道那一页。我的“联系人”部分位于页面的最底部,当然我正在使用 PHP 进行表单验证。验证部分有效,我对此没有任何问题。但是,如果验证失败,浏览器会带我回到页面顶部;由于显而易见的原因,这很不方便。

我知道 'header()' 函数,如果发生错误,我可以使用该函数将我保持在页面底部。例如,在我的 HTML 页面顶部 DOCTYPE 之前,我可以这样写:

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 回答