2012-08-16 89 views
0

在我的页面上,我想检查用户是否已登录,如果他是我允许用户执行各种操作(如上传像下面的照片)。要检查如果用户登录,我写了jQuery的这个简单的功能..rails + 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”并不会阻止其他代码执行,这意味着无论如何都会触发上传图片的colorbox代码。真奇怪的是,“return false”确实被执行了,但并不能阻止剩下的代码执行。我的代码有问题吗?谢谢。

回答

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(); 
    } 
}) 
+0

我不关注。函数checkLogin不会返回任何东西,所以在上面的例子中,x总是未定义的。我应该改变我的函数来返回一些值来满足x? – absolutskyy 2012-08-16 21:54:35

+0

做了一些改变,并得到你在什么。谢谢。 – absolutskyy 2012-08-16 22:04:05

0

嗯,感觉有点傻在这里。我不必进入回调和东西..有一个非常简单的方法。感谢有朝一日让我指向正确的方向。

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