Files
NodeBB/public/src/forum/register.js

154 lines
3.6 KiB
JavaScript
Raw Normal View History

(function() {
2013-08-28 13:47:52 -04:00
var username = $('#username'),
password = $('#password'),
password_confirm = $('#password-confirm'),
register = $('#register'),
emailEl = $('#email'),
username_notify = $('#username-notify'),
email_notify = $('#email-notify'),
password_notify = $('#password-notify'),
password_confirm_notify = $('#password-confirm-notify'),
validationError = false,
successIcon = '<i class="icon icon-ok"></i>';
2013-09-25 13:08:11 -04:00
$('#referrer').val(app.previousUrl);
2013-08-28 13:47:52 -04:00
function showError(element, msg) {
element.html(msg);
element.parent()
.removeClass('alert-success')
.addClass('alert-danger');
2013-08-28 13:47:52 -04:00
element.show();
validationError = true;
}
2013-08-28 13:47:52 -04:00
function showSuccess(element, msg) {
element.html(msg);
element.parent()
.removeClass('alert-danger')
.addClass('alert-success');
2013-08-28 13:47:52 -04:00
element.show();
}
2013-08-28 13:47:52 -04:00
function validateEmail() {
2013-09-17 13:05:54 -04:00
if (!emailEl.val()) {
2013-08-28 13:47:52 -04:00
validationError = true;
return;
}
2013-08-28 13:47:52 -04:00
2013-09-17 13:05:54 -04:00
if (!utils.isEmailValid(emailEl.val())) {
2013-08-28 13:47:52 -04:00
showError(email_notify, 'Invalid email address.');
2013-09-17 13:05:54 -04:00
} else
socket.emit('user.email.exists', {
email: emailEl.val()
});
2013-08-28 13:47:52 -04:00
}
emailEl.on('blur', function() {
validateEmail();
});
2013-08-28 13:47:52 -04:00
function validateUsername() {
2013-09-17 13:05:54 -04:00
if (!username.val()) {
2013-08-28 13:47:52 -04:00
validationError = true;
return;
}
2013-09-17 13:05:54 -04:00
if (username.val().length < config.minimumUsernameLength) {
2013-08-28 13:47:52 -04:00
showError(username_notify, 'Username too short!');
2013-09-17 13:05:54 -04:00
} else if (username.val().length > config.maximumUsernameLength) {
2013-08-28 13:47:52 -04:00
showError(username_notify, 'Username too long!');
2013-09-17 13:05:54 -04:00
} else if (!utils.isUserNameValid(username.val())) {
2013-08-28 13:47:52 -04:00
showError(username_notify, 'Invalid username!');
} else {
2013-09-17 13:05:54 -04:00
socket.emit('user.exists', {
username: username.val()
});
}
2013-08-28 13:47:52 -04:00
}
username.on('keyup', function() {
jQuery('#yourUsername').html(this.value.length > 0 ? this.value : 'username');
});
2013-08-28 13:47:52 -04:00
username.on('blur', function() {
validateUsername();
});
2013-08-28 13:47:52 -04:00
function validatePassword() {
2013-09-17 13:05:54 -04:00
if (!password.val()) {
2013-08-28 13:47:52 -04:00
validationError = true;
return;
}
2013-08-28 13:47:52 -04:00
if (password.val().length < config.minimumPasswordLength) {
showError(password_notify, 'Password too short!');
2013-09-17 13:05:54 -04:00
} else if (!utils.isPasswordValid(password.val())) {
2013-08-28 13:47:52 -04:00
showError(password_notify, 'Invalid password!');
} else {
showSuccess(password_notify, successIcon);
}
2013-09-17 13:05:54 -04:00
if (password.val() !== password_confirm.val() && password_confirm.val() !== '') {
2013-08-28 13:47:52 -04:00
showError(password_confirm_notify, 'Passwords must match!');
}
2013-08-28 13:47:52 -04:00
}
2013-08-28 13:47:52 -04:00
$(password).on('blur', function() {
validatePassword();
});
2013-08-28 13:47:52 -04:00
function validatePasswordConfirm() {
2013-09-17 13:05:54 -04:00
if (!password.val() || password_notify.hasClass('alert-error')) {
2013-08-28 13:47:52 -04:00
return;
}
2013-09-17 13:05:54 -04:00
if (password.val() !== password_confirm.val()) {
2013-08-28 13:47:52 -04:00
showError(password_confirm_notify, 'Passwords must match!');
} else {
showSuccess(password_confirm_notify, successIcon);
}
2013-08-28 13:47:52 -04:00
}
2013-08-28 13:47:52 -04:00
$(password_confirm).on('blur', function() {
validatePasswordConfirm();
});
ajaxify.register_events(['user.exists', 'user.email.exists']);
socket.on('user.exists', function(data) {
if (data.exists === true) {
2013-08-28 13:47:52 -04:00
showError(username_notify, 'Username already taken!');
} else {
showSuccess(username_notify, successIcon);
}
});
socket.on('user.email.exists', function(data) {
if (data.exists === true) {
2013-08-28 13:47:52 -04:00
showError(email_notify, 'Email address already taken!');
} else {
showSuccess(email_notify, successIcon);
}
});
// Alternate Logins
2013-08-28 13:47:52 -04:00
$('.alt-logins li').on('click', function(e) {
document.location.href = $(this).attr('data-url');
});
function validateForm() {
2013-08-28 13:47:52 -04:00
validationError = false;
2013-08-28 13:47:52 -04:00
validateEmail();
validateUsername();
validatePassword();
validatePasswordConfirm();
2013-08-28 13:47:52 -04:00
return validationError;
}
2013-08-28 13:47:52 -04:00
register.on('click', function(e) {
if (validateForm()) e.preventDefault();
});
}());