Newer
Older
dmpopidor / lib / assets / javascripts / shared / register_form.js
@briley briley 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']").on('change keyup', function(){
    toggleRegisterSubmit();
  });
  
  // Run the input validations when the focus changes
  $("form.register-form #user_email, form.register-form #user_recovery_email").on('blur change', 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").on('blur change', 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);
  }
});