2012-03-16 16 views
2

jquery mobileでは、pagebeforeshowイベントで表示されているページをキャンセルする方法はありますか?私はpagebeforeshowでいくつかのパーミッションチェックコードを持っています。パーミッションが満たされていない場合、ユーザにサインインするように指示したいと思います。jquery mobile cancel pagebeforeshowイベント

$("secretpage").live("pagebeforeshow", function() { 
    if (permissionNotMet()) { 
    stopShowingPage()   // <---- how? 
    $.mobile.changePage("#signin") 
    } 
}) 
+0

良い質問ですが、私はそれに数分の時間を割いて、リダイレクトページに移行する前に最初のページ遷移をキャンセルすることができませんでした。 – Jasper

+0

私はログインステップでコードを入力する必要があることに同意します。実際のページのパーミッションチェックを行うことが賢明だと思います。 – Clark

+0

'pagebeforeload'をキャンセルすることができるので、' pagebeforeload'に対して正しいパーミッションを持っているかどうかをチェックすれば、ユーザーをログインページにリダイレクトします。私はこのイベントが外部ページにナビゲートするときにのみ起きると確信していますが、それについてはわかりません。ありがとうございます。 – Jasper

答えて

0

これはあなたが求めていたかなりものではありませんが、あなたは自分自身にこれを容易にするためにあなたのコードの流れを再作業することができます。

その後、サーバの応答に基づいて、適切なページにユーザーを直接、自分で自分のログインフォームの提出をハンドル:

$(document).delegate('#login', 'pageinit', function() { 
    function loginSuccess (serverResponse) { 

     $.mobile.hidePageLoadingMsg(); 

     //here you check the `serverResponse` and direct the user where they need to go 
    } 
    function loginError (jqXHR, textStatus, errorThrown) { 
     console.log(jqXHR); 
     console.log(textStatus); 
     console.log(errorThrown); 
    } 
    $(this).find('form').bind('submit', function() { 

     $.mobile.showPageLoadingMsg(); 

     $.ajax({ url : '<url>', data : $(this).serialize(), success : loginSuccess, error : loginError }); 
     return false; 
    }); 
}); 

あなたもそう<form>タグの属性としてdata-ajax="false"を追加する必要がありますjQuery Mobileはあなたのために投稿を処理しません。

関連する問題