有没有比回声更好的方法呢?

时间:2013-07-27 14:33:13

标签: php javascript ajax forms validation

我正在使用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的了解尚不清楚如何优化这一点。

3 个答案:

答案 0 :(得分:2)

不要依赖js

你可以在没有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)

不要发送那个巨大的脚本。使用简单的错误代码发送自定义标头。您的响应处理程序可以侦听标头(与响应文本不同)并相应地运行。