【问题标题】:jQuery listener for PHP eventPHP事件的jQuery监听器
【发布时间】:2013-07-06 22:06:21
【问题描述】:

我有一个简单的表单提交,并在我的 process.php 文件中检查每个字段的有效性。如果失败,我将使用 $_SESSION 中的键/值对在登录页面上显示警告消息。

警告消息显示在页面加载时设置为 .hide 的 div 上(带有一些引导样式,如果这很重要)。

是否有 jQuery 函数或事件侦听器可用于检测 PHP 回显和切换警报框?

这是我的相关代码:

<div class="alert alert-error alert-block" id="error-box">
    <?php
        if (isset($_SESSION['first_name'])) { 
        echo $_SESSION['first_name'];
        }

        if (isset($_SESSION['last_name'])) { 
        echo $_SESSION['last_name'];
        }

        if (isset($_SESSION['email'])) { 
        echo $_SESSION['email'];
        }

        if (isset($_SESSION['passlen'])) { 
        echo $_SESSION['passlen'];
        }

        if (isset($_SESSION['passmatch'])) { 
        echo $_SESSION['passmatch'];
        }           
?>
</div>

还有:

<script>
    $(document).ready(function(){
        $("#error-box").hide();     
});
</script>

【问题讨论】:

  • jQuery 和 PHP 不能同时处理,一个是服务器端,一个是客户端。您可以检查错误框是否为空,如果是这种情况,请将其隐藏(虽然我不确定您想要什么)

标签: php jquery forms login event-listener


【解决方案1】:

最简单的方法是检查#error-box 是否包含任何文本:

$(document).ready(function(){
    if ($.trim($("#error-box").text()).length < 1) {
        $("#error-box").hide();
    }
}

【讨论】:

  • 这一天赢了。谢啦。我还学习了一些新的 jQuery 命令。
【解决方案2】:

php 在服务器上运行,而 javascript 在浏览器中运行,在执行 php 代码并转换为 html 之后。与其使用 javascript 隐藏/显示,不如仅在有任何错误时插入错误消息。

<?php
// validate your form

if ($errors) : ?>
<div class="alert alert-error alert-block" id="error-box">
    print your errors
</div>
<?php endif; ?>

那么你就不需要 javascript 来隐藏/显示任何东西了。

【讨论】:

    【解决方案3】:

    我认为你的方法有误。正如您所说,您有一个简单的表单,我希望您不要使用 ajax。因此,通过调用您的 php 脚本,您将重新加载页面,如果需要,您可以回显该框。

    <?php $fields = array('first_name', 'last_name', 'email', 'passlen', 'passmatch');?>
    
    <?php if ($_SESSION['first_name'] || $_SESSION['last_name'] || $_SESSION['email'] || $_SESSION['passlen'] || $_SESSION['passmatch'] ): ?>
    
        <div class="alert alert-error alert-block" id="error-box">
            <?php
                foreach($fields as $_field){
                   if (isset($_SESSION[$_field])) { 
                     echo $_SESSION[$_field];
                   }
                }
    
        ?>
        </div>
    
    <?php endif; ?>
    

    好吧,它可以做得更好,但它显示了我想告诉的内容!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多