define('login', function() {
var Login = {};
Login.init = function() {
var formEl = $('.login_form');
var username = $('.login_username-input');
var password = $('.login_password-input');
var submitEl = $('.login_submit');
username.on('blur', function() {
if (username.val().length) {
validateUsername(username.val());
}
});
function validateUsername(username, callback) {
callback = callback || function() {};
if (!utils.isUserNameValid(username) || !utils.slugify(username)) {
$('.header__login_form').addClass('username-break');
} else {
$('.header__login_form').removeClass('username-break');
socket.emit('user.exists', {
username: username
}, function(err, exists) {
if (err) {
return app.alertError(err.message);
}
if (exists) {
$('.login').removeClass('registration');
$('.login').addClass('authorization');
} else {
$('.login').removeClass('authorization');
$('.login').addClass('registration');
}
callback();
});
}
};
submitEl.on('click', function(e) {
e.preventDefault();
if (!username.val()) {
username.focus();
return
} else if (!password.val()) {
password.focus();
return
}
validateUsername(); // Не выполнять дальше, пока не выполнится функция validateUsername
if ($('.login').hasClass('registration')) {
var ajaxUrl = '/registration'
} else if ($('.login').hasClass('authorization')) {
var ajaxUrl = '/authorization'
}
$(".login_submit").addClass('login_submit-accept');
$.ajax(ajaxUrl, {
type: 'post',
data: $(".login_form").serialize(),
headers: {
'x-csrf-token': config.csrf_token
},
success: function(data, status) {
location.reload();
},
error: function(data, status) {
$(".login_submit").removeClass("login_submit-accept");
$('.login_username-input').val('').focus();
}
});
});
};
return Login;
});
Как сделать, чтобы функция validateUsername выполнилась и только после этого продолжилось выполнение кода в submitEl.on('click')?