0
返回從匿名函數的值
我有強制用戶登錄,如果他們點擊提交功能,並發現他們沒有登錄:內jQuery.ajax
$('#buildFormQueue').submit(function(){
return $.dialogs.forceLogin();
});
我需要forceLogin()
返回如果用戶登錄成功,則爲true ..但問題是,登錄表單由ajax加載,並且在用戶甚至看到登錄對話框之前完成執行功能。
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;
}
},
有沒有的forceLogin()
任何辦法從'Log In': function()
內返回?
這實際上是更簡單,優雅的,比我的預期。問題是,只是將問題轉移到了不同的地方。傳遞給'$('#buildFormQueue')。submit()'的回調函數需要返回true以允許提交表單 - 但是如果我在'submit()'內部調用'forceLogin()',則傳遞的參數到那個回調函數需要找到它在'submit()'函數返回的級別。 – 2012-02-18 17:43:37
@kavisiegel你可以攔截第一次提交,防止它,然後重新提交一旦登錄完成成功? – JaredPar 2012-02-18 17:48:27
啊,現在這是我應該想到的!謝謝,我最終改成了'return $ .dialogs.forceLogin(function(){$ form.submit()});'並且在登錄成功時添加了一個callback()調用。萬分感謝! – 2012-02-18 18:07:42