From 8bee231d8030ee4be304e916db117d2ed93c9741 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Mon, 8 Dec 2014 16:11:31 -0500 Subject: [PATCH] show validation errors on register --- public/src/client/register.js | 218 +++++++++++++++++----------------- 1 file changed, 107 insertions(+), 111 deletions(-) diff --git a/public/src/client/register.js b/public/src/client/register.js index 01b8846371..636b8be306 100644 --- a/public/src/client/register.js +++ b/public/src/client/register.js @@ -1,6 +1,6 @@ 'use strict'; -/* globals define, app, utils, socket, config */ +/* globals define, app, utils, socket, config, translator */ define('forum/register', ['csrf'], function(csrf) { @@ -8,46 +8,109 @@ define('forum/register', ['csrf'], function(csrf) { validationError = false, successIcon = ''; - function showError(element, msg) { - translator.translate(msg, function(msg) { - element.html(msg); - element.parent() - .removeClass('alert-success') - .addClass('alert-danger'); - element.show(); - }); - validationError = true; - } + Register.init = function() { + var email = $('#email'), + username = $('#username'), + password = $('#password'), + password_confirm = $('#password-confirm'), + register = $('#register'), + agreeTerms = $('#agree-terms'); - function showSuccess(element, msg) { - translator.translate(msg, function(msg) { - element.html(msg); - element.parent() - .removeClass('alert-danger') - .addClass('alert-success'); - element.show(); + $('#referrer').val(app.previousUrl); + + email.on('blur', function() { + if (email.val().length) { + validateEmail(email.val()); + } }); - } + + username.on('keyup', function() { + $('#yourUsername').text(this.value.length > 0 ? this.value : 'username'); + }); + + username.on('blur', function() { + if (username.val().length) { + validateUsername(username.val()); + } + }); + + password.on('blur', function() { + if (password.val().length) { + validatePassword(password.val(), password_confirm.val()); + } + }); + + password_confirm.on('blur', function() { + if (password_confirm.val().length) { + validatePasswordConfirm(password.val(), password_confirm.val()); + } + }); + + function validateForm(callback) { + validationError = false; + validatePassword(password.val(), password_confirm.val()); + validatePasswordConfirm(password.val(), password_confirm.val()); + + validateEmail(email.val(), function() { + validateUsername(username.val(), callback); + }); + } + + register.on('click', function(e) { + var registerBtn = $(this); + e.preventDefault(); + validateForm(function() { + if (!validationError) { + registerBtn.addClass('disabled'); + + registerBtn.parents('form').ajaxSubmit({ + headers: { + 'x-csrf-token': csrf.get() + }, + success: function(data, status) { + window.location.href = data; + }, + error: function(data, status) { + var errorEl = $('#register-error-notify'); + translator.translate(data.responseText, config.defaultLang, function(translated) { + errorEl.find('p').text(translated); + errorEl.show(); + registerBtn.removeClass('disabled'); + }); + } + }); + } + }); + }); + + if(agreeTerms.length) { + agreeTerms.on('click', function() { + if ($(this).prop('checked')) { + register.removeAttr('disabled'); + } else { + register.attr('disabled', 'disabled'); + } + }); + + register.attr('disabled', 'disabled'); + } + }; function validateEmail(email, callback) { callback = callback || function() {}; var email_notify = $('#email-notify'); - if (!email) { - validationError = true; - return; - } - if (!utils.isEmailValid(email)) { showError(email_notify, '[[error:invalid-email]]'); - return; + return callback(); } socket.emit('user.emailExists', { email: email }, function(err, exists) { - if(err) { - return app.alertError(err.message); + if (err) { + app.alertError(err.message); + return callback(); } if (exists) { @@ -65,11 +128,6 @@ define('forum/register', ['csrf'], function(csrf) { var username_notify = $('#username-notify'); - if (!username) { - validationError = true; - return; - } - if (username.length < config.minimumUsernameLength) { showError(username_notify, '[[error:username-too-short]]'); } else if (username.length > config.maximumUsernameLength) { @@ -96,10 +154,6 @@ define('forum/register', ['csrf'], function(csrf) { } function validatePassword(password, password_confirm) { - if (!password) { - validationError = true; - return; - } var password_notify = $('#password-notify'), password_confirm_notify = $('#password-confirm-notify'); @@ -131,85 +185,27 @@ define('forum/register', ['csrf'], function(csrf) { } } - Register.init = function() { - var email = $('#email'), - username = $('#username'), - password = $('#password'), - password_confirm = $('#password-confirm'), - register = $('#register'), - agreeTerms = $('#agree-terms'); - - $('#referrer').val(app.previousUrl); - - email.on('blur', function() { - validateEmail(email.val()); + function showError(element, msg) { + translator.translate(msg, function(msg) { + element.html(msg); + element.parent() + .removeClass('alert-success') + .addClass('alert-danger'); + element.show(); }); + validationError = true; + } - username.on('keyup', function() { - $('#yourUsername').text(this.value.length > 0 ? this.value : 'username'); + function showSuccess(element, msg) { + translator.translate(msg, function(msg) { + element.html(msg); + element.parent() + .removeClass('alert-danger') + .addClass('alert-success'); + element.show(); }); + } - username.on('blur', function() { - validateUsername(username.val()); - }); - - password.on('blur', function() { - validatePassword(password.val(), password_confirm.val()); - }); - - password_confirm.on('blur', function() { - validatePasswordConfirm(password.val(), password_confirm.val()); - }); - - function validateForm(callback) { - validationError = false; - validatePassword(password.val(), password_confirm.val()); - validatePasswordConfirm(password.val(), password_confirm.val()); - - validateEmail(email.val(), function() { - validateUsername(username.val(), callback); - }); - } - - register.on('click', function(e) { - var registerBtn = $(this); - e.preventDefault(); - validateForm(function() { - if (!validationError) { - registerBtn.addClass('disabled'); - - registerBtn.parents('form').ajaxSubmit({ - headers: { - 'x-csrf-token': csrf.get() - }, - success: function(data, status) { - window.location.href = data; - }, - error: function(data, status) { - var errorEl = $('#register-error-notify'); - translator.translate(data.responseText, config.defaultLang, function(translated) { - errorEl.find('p').text(translated) - errorEl.show(); - registerBtn.removeClass('disabled'); - }); - } - }); - } - }); - }); - - if(agreeTerms.length) { - agreeTerms.on('click', function() { - if ($(this).prop('checked')) { - register.removeAttr('disabled'); - } else { - register.attr('disabled', 'disabled'); - } - }); - - register.attr('disabled', 'disabled'); - } - }; return Register; });