Javascript函数本身调用

时间:2014-12-15 15:36:02

标签: javascript php jquery

我想在点击a时显示自定义提醒,但如果我已登录,我想重定向到另一个页面。我有这个。

        <div id="contentCalendar" class="col-md-3 images_1_of_4 text-center">
            <a><img onClick="show_alert();" id="rotateme" class="img-responsive img-circle center-block" src="web/images/calendaricon.png"/></a>
            <h4><a href="#">Check our last events</a></h4>

        </div>
        <div id="myalert" class="alert alert-error">
        <a href="#" class="close" data-dismiss="alert">&times;</a>
        <strong>Error!</strong> You must be logged in to see our calendar.
        </div>  
        <script>    
        $('#myalert').hide(); 
        //What happen if you want to enter the events without loggin.
        var logged_in = <?php echo ($logged_in); ?>;
        function show_alert()
        {
            if(logged_in==true)
            {
                window.location="timeline.php";
            }
            else
            {
                $('#myalert').show();
            }
        }
        </script>

出于某种原因,当Logged_in为true并且我被重定向时,它就像魅力一样。但是当我退出时,即使我根本没按下按钮,它也不显示警报。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

试试这一行:

var logged_in = <?php echo $logged_in ? 'true' : 'false'; ?>;

答案 1 :(得分:1)

始终,始终,通过json_encode运行您在JS中嵌入的所有内容:

var logged_in = <?php echo json_encode($logged_in); ?>;

当你在php中只是echo一个虚假的值时,它就没有回应,从而破坏了你的javascript。

答案 2 :(得分:0)

这假设php代码正确输出布尔值。查看页面源将允许您查看是否正确输出。

现在查看JavaScript代码。

将onclick移动到锚点并取消点击事件

<a href="#" onclick="show_alert(); return false"><img ....

更好的解决方案是转储内联事件处理程序。

不引人注意地附加点击并使用preventDefault取消点击。

HTML:

<a href="timeline.php" class="calendar"><img ....

的JavaScript

var logged_in = <?php echo ($logged_in); ?>;
$("a.calendar").on("click", function (e) { 
    if(!logged_in) {
        e.preventDefault();
        $('#myalert').show();
    }
});

答案 3 :(得分:-1)

您需要将脚本包装在某种事件中。试试:

  $(document).ready(function () {
  var logged_in = <?php echo ($logged_in); ?>;
        function show_alert()
        {
            if(logged_in==true)
            {
                window.location="timeline.php";
            }
            else
            {
                $('#myalert').show();
            }
        }
});