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を呼び出してユーザーがログインしていない場合、「return 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 に答える