0

在我的页面上,我想检查用户是否已登录,如果他已登录,那么我允许用户执行各种操作(例如上传如下所示的照片)。为了检查用户是否登录,我在 jquery 中编写了这个简单的函数。

$(document).ready(function(){

 function checkLogin(callback){
  <% if !current_user %>
    $.colorbox({href:"/signup", width: "400px", height: "200px"});
    var status = false;
    callback(status)
  <% end %>
 }

当我想检查用户是否登录时,我调用上面的代码:

$(".upload-pics").click(function(){
  checkLogin(function(c){
    if(c == false){
      return false;
    }
  });
  // open colorbox to upload pictures
  $("a.upload-pics").colorbox();
})

问题是每次我调用 checkLogin 并说如果用户没有登录,“返回 false”并没有阻止其余代码执行,这意味着上传图片的颜色框代码无论如何都会被触发。真正奇怪的部分是“return false”确实被执行了,但这并没有阻止其余代码的执行。我的代码有问题吗?谢谢。

4

2 回答 2

0

因为它在另一个函数里面..做

$(".upload-pics").click(function(e){

    var x = checkLogin(function(c){
       if(c == false){
          return false;
       }
    });

    if(!x){
        return false;
    }else{        
       $("a.upload-pics").colorbox();
    }
})
于 2012-08-16T21:41:28.830 回答
0

嗯,感觉这里有点傻。我不必进入回调和其他东西..这是一个非常简单的方法。感谢wirey为我指明了正确的方向。

function checkLogin(){
  <% if !current_user %>
    $.colorbox({href:"/signup", width: "400px", height: "200px"});
    return false;
  <% end %>
  return true;
}

$(".upload-pics").click(function(){
  var x = checkLogin();
  if(!x){
    return false;
  }
于 2012-08-16T22:03:30.247 回答