當一個注冊表單的提交按鈕點擊后,通過綁定的時間來確定用戶名、郵箱等是否有效,最后來確定是否提交表單。先設置一個變量status值為true,然后通過ajax來判斷用戶名、郵箱等是否已經注冊,如果已注冊就在回調函數中設置status的值為false,最后再判斷status的值是true還是false來決定是否提交。判斷status的代碼寫在ajax的后面,但是還是先執行了判斷status的代碼,再執行了ajax回調函數中設置status的代碼,不知道該怎么做?window.cb={};cb.register={};$('#register-submit').click(function(){var$self=$(this);var$form=$(this).closest('#register-form');var$username=$form.find('#register-username');varusername=$username.val();cb.register.status=true;if(!username.match(/^[0-9a-z_\u4e00-\u9af5]{2,14}$/i)){$username.next('span').remove();$username.after('無效的用戶名');cb.register.status=false;}else{$username.next('span').remove();$.post('/auth/ajax',{username:username},function(data){if(data.status==false){$username.after('用戶名已注冊');cb.register.status=false;}},'json');}var$email=$form.find('#register-email');varemail=$email.val();if(!email.match(/^[0-9a-z_\-]+@[0-9a-z_\-]+\.[a-z]{2,4}$/i)){$email.next('span').remove();$email.after('無效的郵箱');cb.register.status=false;}else{$email.next('span').remove();$.post('/auth/ajax',{email:email},function(data){if(data.status==false){$email.after('郵箱已注冊');cb.register.status=false;console.log(cb.register.status);}},'json');}var$pwd=$form.find('#register-password');varpwd=$pwd.val();if(!pwd.match(/^[0-9a-z_\-#@$*%&]{6,16}$/i)){$pwd.next('span').remove();$pwd.after('無效的密碼');cb.register.status=false;}console.log('hello');console.log(cb.register.status);returnfalse;if(cb.register.status==false){returnfalse;}$.post('/auth/register',{email:email,name:username,password:pwd},function(data){if(data.status==true){$self.css('display','none');var$message=$('#message');vars1='注冊成功';vars2='一封郵件已發送到郵箱,請在1小時內驗證(過期后需重新發送驗證郵件)';$message.find('.message-body').append(s1+s1);}else{var$token=$form.find('#token');$token.attr('name',data.token.name);$token.attr('value',data.token.value);$form.find('.submit-tips').remove();$form.prepend('注冊失敗,請重新提交');}},'json');returnfalse;});
jquery的ajax請求尚未完成,就會接著執行后面的代碼嗎?
守候你守候我
2019-04-19 16:11:55