0
内アノン関数から値を返す
私は、彼らが提出をクリックした場合にログインするユーザーを強制的機能を持っており、それは彼らがログインしていない検索します。jQuery.ajax
$('#buildFormQueue').submit(function(){
return $.dialogs.forceLogin();
});
は私が返すようにforceLogin()
が必要しかし、ユーザーログインが成功した場合はtrueです。ただし、ログインフォームがajaxによってロードされ、ユーザーがログインダイアログを表示する前にforceLogin()
関数の実行が完了しているという問題があります。
forceLogin : function(){
if(!$.loggedIn){
$.ajax('/index.php?act=loginDialog', {success:function(data){
$("#dialog-message").html(data)
.attr('title', 'Please Log In')
.dialog({
modal: true,
buttons: {
'Cancel': function(){
$(this).dialog('close');
},
'Log In': function(){
$this = $(this);
$.post('/index.php?act=loginDialog&mode=post', {
'username' : $("#dialog-message :input[name='username']").val(),
'password' : $("#dialog-message :input[name='password']").val()
}, function(data){
if(data == "true"){
$this.dialog('close');
$.loggedIn = true;
}else{
$this.find('div').slideDown('slow');
}
});
},
},
width: 400,
position: ['center', 50],
});
$('#dialog-message :input').keypress(function (e) {
if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
$('.ui-dialog-buttonset :last').click();
return false;
} else {
return true;
}
});
}});
return false;
}else{
return true;
}
},
'Log In': function()
内から復帰するforceLogin()
の方法はありますか?
実際に私が予想していたよりもはるかに簡単かつエレガントです。しかし問題は、問題を別の場所に移しただけです。 '$( '#buildFormQueue')。submit()'に渡されたコールバック関数は、フォームを送信するためにはtrueを返す必要がありますが、 'submit()'の中で 'forceLoginそのコールバックには、 'submit()'関数で返すべきレベルを見つける必要があります。 –
@kavisiegelあなたは最初にサブミットを傍受し、それを防ぎ、ログインが成功裏に完了したら再提出できますか? – JaredPar
ああ、今それは私が考えたはずのものです!ありがとう、私は '$を返すように変更したばかりです。' $ .dialogs.forceLogin(function(){$ form.submit()}; ')、成功時のログイン時にcallback()コールを追加します。ありがとう、トン! –