簡體   English   中英

有比回聲更好的方法嗎?

[英]Is there a better way to do this than echo?

我正在使用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的了解還不是很清楚如何解決這個問題。

不要依賴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">

堅持這一原則通常會使代碼更簡單易懂。

這也是可能的

<?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; ?>

不要發送巨大的腳本。 發送帶有簡單錯誤代碼的自定義標頭。 您的響應處理程序可以偵聽標頭(與響應文本不同)並相應地執行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM