diff --git a/app/views/shared/_accessible_submit_button.html.erb b/app/views/shared/_accessible_submit_button.html.erb index 497c1e8..6cc57e4 100644 --- a/app/views/shared/_accessible_submit_button.html.erb +++ b/app/views/shared/_accessible_submit_button.html.erb @@ -14,12 +14,12 @@ $("#<%= id %>").on('click focus', function(e){ if($(this).attr('aria-disabled') == 'true'){ e.preventDefault(); - $(this).siblings(".error-tooltip-right").attr('role', 'tooltip'); + toggleFormElementError(this, "<%= tooltip %>"); }else{ - $(this).siblings(".error-tooltip-right").attr('role', ''); + toggleFormElementError(this, ''); } }).on('blur', function(){ - $(this).siblings(".error-tooltip-right").attr('role', ''); + toggleFormElementError(this, ''); }); }); - \ No newline at end of file + diff --git a/lib/assets/javascripts/dmproadmap/forms.js b/lib/assets/javascripts/dmproadmap/forms.js index 4cfa730..0413bfb 100644 --- a/lib/assets/javascripts/dmproadmap/forms.js +++ b/lib/assets/javascripts/dmproadmap/forms.js @@ -1,44 +1,4 @@ // --------------------------------------------------------------------------- -function toggleAutocompleteError(autocomplete, idbox, errorMessage){ - if(autocomplete.length > 0 && idbox.length > 0){ - var err = $(idbox).siblings("span.error-tooltip"); - if(err.length <= 0){ - err = $(idbox).siblings("span.error-tooltip-right"); - } - - // If an error element is available and the error message is not empty and the field - // is not empty - if(err.length > 0 && (errorMessage === '' || $(autocomplete).val().trim().length <= 0)){ - err.html('').attr('role', ''); - $(autocomplete).removeClass('red-border'); - }else{ - err.html(errorMessage).attr('role', 'tooltip'); - $(autocomplete).addClass('red-border'); - } - } -} - -// --------------------------------------------------------------------------- -function toggleInputError(input, errorMessage){ - var err = $(input).siblings("span.error-tooltip"); - if(err.length <= 0){ - err = $(input).siblings("span.error-tooltip-right"); - } - -console.log(err.length + ' - ' + errorMessage + ' - ' + $(input).val().trim().length); - - // If an error element is available and the error message is not empty and the field - // is not empty - if(err.length > 0 && (errorMessage === '' || $(input).val().trim().length <= 0)){ - err.html('').attr('role', ''); - $(input).removeClass('red-border'); - }else{ - err.html(errorMessage).attr('role', 'tooltip'); - $(input).addClass('red-border'); - } -} - -// --------------------------------------------------------------------------- function validatePassword(sPassword) { if(sPassword.trim().length >= 8 && sPassword.trim().length <= 128){ return ''; @@ -55,4 +15,4 @@ }else{ return __('Invalid Email'); } -} \ No newline at end of file +} diff --git a/lib/assets/javascripts/dmproadmap/utils.js b/lib/assets/javascripts/dmproadmap/utils.js index 170962a..7ba55da 100644 --- a/lib/assets/javascripts/dmproadmap/utils.js +++ b/lib/assets/javascripts/dmproadmap/utils.js @@ -46,3 +46,38 @@ $(this).parent().find('div.popover-message').remove(); }); }); + +function displayInfoBox(msg){ + $("div.roadmap-info-box span:not(.aria-only)").html(msg).attr('role', 'status') + .css('width', 'auto').parent().css('visibility', 'visible'); +} + +function displayAlertBox(msg){ + $("div.roadmap-alert-box span:not(.aria-only)").show().html('msg') + .attr('role', 'alert').css('width', 'auto').css('visibility', 'visible'); +} + +function toggleFormElementError(input, errorMessage){ + //Check if element is a auto complete combobox + if ($(input).attr('data-combobox-prefix-class') === 'combobox'){ + idbox = '#' + $(input).attr('id').replace('_name', '_id'); + }else{ + idbox = input; + } + var err = $(idbox).siblings("span.error-tooltip"); + if(err.length <= 0){ + err = $(idbox).siblings("span.error-tooltip-right"); + } + // toggleError(input, err, errorMessage); + console.log(err.length + ' - ' + errorMessage + ' - ' + $(input).val().trim().length); + + // If an error element is available and the error message is not empty and the field + // is not empty + if(err.length > 0 && (errorMessage === '' || $(input).val().trim().length <= 0)){ + err.html('').attr('role', '').css('display', 'none'); + $(input).removeClass('red-border'); + }else{ + err.html(errorMessage).attr('role', 'alert').css('display', 'inline'); + $(input).addClass('red-border'); + } +} diff --git a/lib/assets/javascripts/views/contacts/new_contact.js b/lib/assets/javascripts/views/contacts/new_contact.js index 43f6d84..9f2ea63 100644 --- a/lib/assets/javascripts/views/contacts/new_contact.js +++ b/lib/assets/javascripts/views/contacts/new_contact.js @@ -5,7 +5,7 @@ $(document).ready(function(){ // Run the input validations when the focus changes $("#contact_us_contact_email").blur(function(){ - toggleInputError(this, validateEmail($(this).val().trim())); + toggleFormElementError(this, validateEmail($(this).val().trim())); }); $("input[type='text'], input[type='email'], textarea").change(function(e){ @@ -22,4 +22,4 @@ // } $("#create_contact_submit").attr('aria-disabled', !enable); }); -}); \ No newline at end of file +}); diff --git a/lib/assets/javascripts/views/devise/registrations/edit.js b/lib/assets/javascripts/views/devise/registrations/edit.js index d5365b8..ce67491 100644 --- a/lib/assets/javascripts/views/devise/registrations/edit.js +++ b/lib/assets/javascripts/views/devise/registrations/edit.js @@ -8,15 +8,15 @@ $("#user_email, #user_recovery_email").blur(function(){ var msg = validateEmail($(this).val().trim()); // If the standard email validation was successful validate that they do not match - toggleInputError(this, (msg != '' ? msg : validateEmailsDoNotMatch())); + toggleFormElementError(this, (msg != '' ? msg : validateEmailsDoNotMatch())); }); $("#user_current_password").blur(function(){ - toggleInputError(this, validatePassword($(this).val().trim())); + toggleFormElementError(this, validatePassword($(this).val().trim())); }); $("#user_new_password, #user_password_confirmation").blur(function(){ var msg = validatePassword($(this).val().trim()); // If the standard password validation was successful validate that they match - toggleInputError(this, (msg != '' ? msg : validatePasswordsMatch())); + toggleFormElementError(this, (msg != '' ? msg : validatePasswordsMatch())); }); // Toggle the password field so that its visible/masked diff --git a/lib/assets/javascripts/views/plans/index.js b/lib/assets/javascripts/views/plans/index.js index d6261b5..54817f7 100644 --- a/lib/assets/javascripts/views/plans/index.js +++ b/lib/assets/javascripts/views/plans/index.js @@ -8,16 +8,14 @@ $.post("/plans/" + id + "/visibility", params, function(data){ if(data['code'] === 1){ var msg = ($(self).is(':checked') ? __('The plan is now a test.') : __('The plan is no longer a test.')); + displayInfoBox(msg); // If the save was successful make sure the Visibility text gets updated to 'Private' - $("div.roadmap-info-box span:not(.aria-only)").html(msg).attr('role', 'status') - .css('width', 'auto').parent().css('visibility', 'visible'); $(self).parent().siblings("#visibility-" + id).html(__('Private')); }else{ // Display an error message - $("div.roadmap-alert-box span:not(.aria-only)").show().html(data['msg']) - .attr('role', 'alert').css('width', 'auto').css('visibility', 'visible'); + displayAlertBox(data['msg']); e.preventDefault(); } }); }); -}); \ No newline at end of file +}); diff --git a/lib/assets/javascripts/views/plans/new.js b/lib/assets/javascripts/views/plans/new.js index fc4b489..01712f7 100644 --- a/lib/assets/javascripts/views/plans/new.js +++ b/lib/assets/javascripts/views/plans/new.js @@ -22,11 +22,11 @@ // If there was no selection, highlight the box and display tooltip $("#plan_funder_name").blur(function(){ var msg = ($("#plan_funder_id").val().trim().length <= 0 ? __('Please select a valid funding organisation from the list') : ''); - toggleAutocompleteError($(this), $("#plan_funder_id"), msg); + toggleFormElementError($(this), msg); }); $("#plan_org_name").blur(function(){ var msg = ($("#plan_org_id").val().trim().length <= 0 ? __('Please select a valid research organisation from the list') : ''); - toggleAutocompleteError($(this), $("#plan_org_id"), msg); + toggleFormElementError($(this), msg); }); // Make sure the checkbox is unchecked if we're entering text diff --git a/lib/assets/javascripts/views/shared/login_form.js b/lib/assets/javascripts/views/shared/login_form.js index 76abb74..c081110 100644 --- a/lib/assets/javascripts/views/shared/login_form.js +++ b/lib/assets/javascripts/views/shared/login_form.js @@ -12,10 +12,10 @@ // Run the input validations when the focus changes $("form.login-form #user_email").on('blur', function(){ - toggleInputError(this, validateEmail($(this).val().trim())); + toggleFormElementError(this, validateEmail($(this).val().trim())); }); $("form.login-form #user_password").on('blur', function(){ - toggleInputError(this, validatePassword($(this).val().trim())); + toggleFormElementError(this, validatePassword($(this).val().trim())); }); // Toggle the password field so that its visible/masked @@ -25,9 +25,9 @@ }); // Run the validations in case the page was refreshed - toggleInputError($("form.login-form #user_email"), + toggleFormElementError($("form.login-form #user_email"), validateEmail($("form.login-form #user_email").val().trim())); - toggleInputError($("form.login-form #user_password"), + toggleFormElementError($("form.login-form #user_password"), validatePassword($("form.login-form #user_password").val().trim())); // Make sure the show password checkbox is unchecked on load diff --git a/lib/assets/javascripts/views/shared/register_form.js b/lib/assets/javascripts/views/shared/register_form.js index e55917a..d5b3416 100644 --- a/lib/assets/javascripts/views/shared/register_form.js +++ b/lib/assets/javascripts/views/shared/register_form.js @@ -14,10 +14,10 @@ $("form.register-form #user_email, form.register-form #user_recovery_email").on('blur change', function(){ var msg = validateEmail($(this).val().trim()); // If the standard email validation was successful validate that they do not match - toggleInputError(this, (msg != '' ? msg : validateEmailsDoNotMatch())); + toggleFormElementError(this, (msg != '' ? msg : validateEmailsDoNotMatch())); }); $("form.register-form #user_password").on('blur change', function(){ - toggleInputError(this, validatePassword($(this).val().trim())); + toggleFormElementError(this, validatePassword($(this).val().trim())); }); // Toggle the password field so that its visible/masked @@ -49,11 +49,11 @@ }); // Run the validations in case the page was refreshed - toggleInputError($("form.register-form #user_email"), + toggleFormElementError($("form.register-form #user_email"), validateEmail($("form.register-form #user_email").val().trim())); - toggleInputError($("form.register-form #user_recovery_email"), + toggleFormElementError($("form.register-form #user_recovery_email"), validateEmail($("form.register-form #user_recovery_email").val().trim())); - toggleInputError($("form.register-form #user_password"), + toggleFormElementError($("form.register-form #user_password"), validatePassword($("form.register-form #user_password").val().trim())); // Make sure the show password checkbox is unchecked on load