Newer
Older
dmpopidor / lib / assets / javascripts / shared / register_form.js
@Brian Riley Brian Riley on 9 Jun 2017 2 KB resolved cherry-pick conflicts
$(document).ready(function(){
  // If the hidden valid-form field is set to true then enable the submit button
  $("form.register-form #valid-form").change(function(){
    $(this).siblings(".form-submit").attr('aria-disabled', $(this).val() != "true");
  });

	// See if we should enable the submit button when a required input changes
  $("form.register-form input[class*='required']").change(function(){
    toggleRegisterSubmit();
  });
	
	// Run the input validations when the focus changes
	$("form.register-form #user_email, form.register-form #user_recovery_email").blur(function(){
		let msg = validateEmail($(this).val().trim());
		// If the standard email validation was successful validate that they do not match
    toggleInputError(this, (msg != '' ? msg : validateEmailsDoNotMatch()));
	});
	$("form.register-form #user_password").blur(function(){
		toggleInputError(this, validatePassword($(this).val().trim()));
	});
	
	// Toggle the password field so that its visible/masked
	$("form.register-form #password_show").click(function(){
    let typ = $("form.register-form #user_password").attr('type');
    $("form.register-form #user_password").attr('type', (typ === 'password' ? 'text' : 'password'));
	});
	
	// Run the validations in case the page was refreshed
	toggleInputError($("form.register-form #user_email"), 
									 validateEmail($("form.register-form #user_email").val().trim()));
	toggleInputError($("form.register-form #user_recovery_email"), 
									 validateEmail($("form.register-form #user_recovery_email").val().trim()));
	toggleInputError($("form.register-form #user_password"), 
									 validatePassword($("form.register-form #user_password").val().trim()));
	
	// Make sure the show password checkbox is unchecked on load
	$("form.register-form #password_show").attr("checked", false);

	function validateEmailsDoNotMatch(){
		let email = $("form.register-form #user_email").val().trim();
		let recovery = $("form.register-form #user_recovery_email").val().trim();
		return (email === recovery ? (email != '' ? __('Emails must be different') : '') : '');
	}

  function toggleRegisterSubmit(){
    let disabled = ($("form.register-form #user_firstname").val().trim().length <= 0 || 
                    $("form.register-form #user_surname").val().trim().length <= 0 || 
										validateEmail($("form.register-form #user_email").val()) != '' || 
										validateEmail($("form.register-form #user_recovery_email").val()) != '' || 
                    !$("form.register-form #user_accept_terms").prop('checked') ||
                    $("form.register-form #user_email").val() === $("form.register-form #user_recovery_email").val());
    $("form.register-form #register-button").attr('aria-disabled', disabled);
  }
});