我正在使用PHP留言簿,它有一些表单验证(例如在出现错误时突出显示字段),我只知道如何处理JavaScript。
我有一个简单的表单,如下所示:
<form action="$_SERVER['SELF']" enctype="multipart/form-data" method="post">
<label for="guest_name">Guest Name:</label>
<input id="post-name" class="noerror" type="text" name="guest_name">
<input type="submit" name="submit" value="Let 'er rip" />
</form>
我正在使用以下函数进行验证:
//Name Validation
if(strlen($_POST["guest_name"]) != 0){
global $Name;
$Name = $_POST["guest_name"];
} else {
echo '<script type="text/javascript">
$(document).ready(function(){
$("#post-name").removeClass("noerror").addClass("error");
});
</script>';
}
它有效,但我无法帮助,但觉得这是一种非常低效的方法来解决这个问题,但我对PHP的了解尚不清楚如何优化这一点。
答案 0 :(得分:2)
你可以在没有js的情况下做任何事情,例如:
<form action="" enctype="multipart/form-data" method="post">
<label for="guest_name">Guest Name:</label>
<?php
$class = 'noerror';
if(empty($_POST["guest_name"])){
$class = '';
}
?>
<input id="post-name" class="<?php echo $class ?>" type="text" name="guest_name">
<input type="submit" name="submit" value="Let 'er rip" />
</form>
请注意,双阴影可能容易混淆(没有错误),因此最好始终使用正逻辑检查:
<?php
$class = '';
if(empty($_POST["guest_name"])){
$class = 'error';
}
?>
<input id="post-name" class="<?php echo $class ?>" type="text" name="guest_name">
坚持这一原则通常会使代码更简单易懂。
答案 1 :(得分:1)
这也是可能的
<?php
if(strlen($_POST["guest_name"]) != 0) :
$Name = $_POST["guest_name"];
else :
?>
<script type="text/javascript">
$(document).ready(function(){
$("#post-name").removeClass("noerror").addClass("error");
});
</script>';
<?php endif; ?>
答案 2 :(得分:0)
不要发送那个巨大的脚本。使用简单的错误代码发送自定义标头。您的响应处理程序可以侦听标头(与响应文本不同)并相应地运行。