diff --git a/app/views/shared/_accessible_submit_button.html.erb b/app/views/shared/_accessible_submit_button.html.erb index 7d53835..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', 'alert'); + 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 c344e98..0b07e36 100644 --- a/lib/assets/javascripts/dmproadmap/forms.js +++ b/lib/assets/javascripts/dmproadmap/forms.js @@ -39,44 +39,6 @@ } } -// --------------------------------------------------------------------------- -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, blankAsError){ - var err = $(input).siblings("span.error-tooltip"); - if(err.length <= 0){ - err = $(input).siblings("span.error-tooltip-right"); - } - - // If an error element is available and the error message is not empty and the field - // is not empty (unless its a required field!) - if(err.length > 0 && (errorMessage === '' || (!blankAsError && $(input).val().trim().length <= 0))){ - err.html('').attr('role', ''); - $(input).removeClass('red-border'); - }else{ - err.html(errorMessage).attr('role', 'alert'); - $(input).addClass('red-border'); - } -} - // Animate the Notification message section at the top of the page // --------------------------------------------------------------------------- function animateNotification(message, isAlert){ @@ -109,4 +71,30 @@ }else{ return __('Invalid email address'); } -} \ No newline at end of file +} + +// --------------------------------------------------------------------------- +function toggleFormElementError(input, errorMessage, blankAsError){ + //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"); + } + 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 (unless its a required field!) + if(err.length > 0 && (errorMessage === '' || (!blankAsError && $(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/dmproadmap/utils.js b/lib/assets/javascripts/dmproadmap/utils.js index 170962a..88a87d1 100644 --- a/lib/assets/javascripts/dmproadmap/utils.js +++ b/lib/assets/javascripts/dmproadmap/utils.js @@ -46,3 +46,4 @@ $(this).parent().find('div.popover-message').remove(); }); }); + 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 4877949..cc6ac83 100644 --- a/lib/assets/javascripts/views/plans/index.js +++ b/lib/assets/javascripts/views/plans/index.js @@ -17,4 +17,4 @@ } }}); }); -}); \ 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/plans/share.js b/lib/assets/javascripts/views/plans/share.js index 9d645fc..b221b47 100644 --- a/lib/assets/javascripts/views/plans/share.js +++ b/lib/assets/javascripts/views/plans/share.js @@ -14,7 +14,7 @@ // Run the input validations when the focus changes $("#role_user_email").on('blur', function(){ - toggleInputError(this, validateEmail($(this).val().trim())); + toggleFormElementError(this, validateEmail($(this).val().trim())); }); // See if we should enable the add collaborator button @@ -40,4 +40,4 @@ $("input[name='role[access_level]']:checked").val() == undefined); $("#add-collaborator-button").attr('aria-disabled', disabled); } -}); \ No newline at end of file +}); diff --git a/lib/assets/javascripts/views/plans/show.js b/lib/assets/javascripts/views/plans/show.js index 32e065f..91826ab 100644 --- a/lib/assets/javascripts/views/plans/show.js +++ b/lib/assets/javascripts/views/plans/show.js @@ -1,13 +1,13 @@ $(document).ready(function(){ // Run the input validations when the focus changes $("input[type='email']").on('blur', function(){ - toggleInputError(this, validateEmail($(this).val().trim())); + toggleFormElementError(this, validateEmail($(this).val().trim())); }).on('change keyup', function(){ toggleProjectDetailsSubmit(); }); $("#plan_title").on('blur', function(){ - toggleInputError(this, ($(this).val().trim().length <= 0 ? __('The title cannot be blank') : ''), true); + toggleFormElementError(this, ($(this).val().trim().length <= 0 ? __('The title cannot be blank') : ''), true); }); $("#show-data-contact").click(function(){ @@ -70,4 +70,4 @@ .siblings(".guidance-group-label").addClass('disabled'); } } -}); \ No newline at end of file +}); 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