2012-08-16 90 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; 
    }