我有一个相对简单的声音问题,希望能得到一个简单的答案。我目前正在开发一个向下滚动的网站;一切都在一页上,你知道那一页。我的“联系”部分位于页面的最底部,我当然正在使用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()函数,页面会正确地保持原样,但不会显示错误。
或者,也可以询问这个问题,当表格被正确验证时会发生什么,调用'header'函数,我想留在页面底部并显示一些HTML'谢谢,您的表单已提交'? (我不想去'感谢'页面或任何东西,只是留在同一个地方并在页面上给'谢谢')我认为我遇到了同样的问题。有解决方案吗?
提前致谢!
答案 0 :(得分:2)
在标头中指定位置将导致浏览器重定向到该URI。在将任何输出发送到浏览器之前调用此方法。
重置页面时$errors == false
,因此不显示段落。
听起来你需要在这里集成AJAX,或者服务器端和客户端代码的混合。
答案 1 :(得分: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>
快乐编码。!!!