0

我正在使用 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 的了解还没有完全弄清楚如何优化它。

4

3 回答 3

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">

坚持这一原则通常会导致代码更简单、更容易理解。

于 2013-07-27T14:41:41.783 回答
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; ?>
于 2013-07-27T14:40:57.370 回答
0

不要发送那么大的脚本。发送带有简单错误代码的自定义标头。您的响应处理程序可以侦听标头(与响应文本不同)并采取相应的行为。

于 2013-07-27T14:40:48.427 回答