From d4426dd22351a39816262485b63cc1242c22f495 Mon Sep 17 00:00:00 2001 From: Craig Davis Date: Fri, 5 Aug 2011 17:37:11 -0500 Subject: [PATCH] Maintain an errors object with a list of all of the messages for the current form This is sourced from https://github.com/valmynd/uni-form/commit/7ed386505306ddd19f7d25fe3c1c73e8b000f87e This could have been fetched in a round about way with something like $('#form-id div.ctrlHolder.error p.formHint') but this will be much more convenient. --- js/uni-form-validation.jquery.js | 23 ++++++++++++++++++++--- js/uni-form-validation.jquery.min.js | 6 ++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/js/uni-form-validation.jquery.js b/js/uni-form-validation.jquery.js index 82698e8..565a3f3 100644 --- a/js/uni-form-validation.jquery.js +++ b/js/uni-form-validation.jquery.js @@ -30,6 +30,13 @@ jQuery.fn.uniform = function(extended_settings) { */ var self = this; + /** + * Errors of all fields by their names + * + * @var object + */ + var errors = {}; + /** * Object extending the defaults object * @@ -393,7 +400,7 @@ jQuery.fn.uniform = function(extended_settings) { out = bits[0], re = /^([ds])(.*)$/, p; - + for (var i=1; i').attr('id','errorMsg').html("

"+title+"

");if(messages.length){$message.append($('
    '));for(m in messages){$('ol',$message).append($('
  1. ').text(messages[m]));}} form.prepend($message);$('html, body').animate({scrollTop:form.offset().top},500);$('#errorMsg').slideDown();return false;};var showFormSuccess=function(form,title){var $message;if($('#okMsg').length){$('#okMsg').remove();} -$message=$('
    ').attr('id','okMsg').html("

    "+title+"

    ");form.prepend($message);$('html, body').animate({scrollTop:form.offset().top},500);$('#okMsg').slideDown();return false;};return this.each(function(){var form=jQuery(this);var validate=function($input,valid,text){var $p=$input.closest('div.'+settings.holder_class).andSelf().toggleClass(settings.invalid_class,!valid).toggleClass(settings.error_class,!valid).toggleClass(settings.valid_class,valid).find('p.formHint');if(!valid&&!$p.data('info-text')){$p.data('info-text',$p.html());} +$message=$('
    ').attr('id','okMsg').html("

    "+title+"

    ");form.prepend($message);$('html, body').animate({scrollTop:form.offset().top},500);$('#okMsg').slideDown();return false;};return this.each(function(){var form=jQuery(this);var validate=function($input,valid,text){var $p=$input.closest('div.'+settings.holder_class).andSelf().toggleClass(settings.invalid_class,!valid).toggleClass(settings.error_class,!valid).toggleClass(settings.valid_class,valid).find('p.formHint');if(!valid){errors[name]=text;} +else if(name in errors){delete errors[name];} +if(!valid&&!$p.data('info-text')){$p.data('info-text',$p.html());} else if(valid){text=$p.data('info-text');} if(text){$p.html(text);}};form.find(settings.field_selector).each(function(){var $input=$(this),value=$input.val();$input.data('default-color',$input.css('color'));if(value===$input.data('default-value')||!value){$input.not('select').css("color",settings.default_value_color);$input.val($input.attr('data-default-value'));}});if(settings.ask_on_leave||form.hasClass('askOnLeave')){var initial_values=form.serialize();$(window).bind("beforeunload",function(e){if((initial_values!=form.serialize())&&(settings.ask_on_leave||form.hasClass('askOnLeave'))){return($.isFunction(settings.on_leave_callback))?settings.on_leave_callback(form):confirm(i18n('on_leave'));}});} form.submit(function(){form.removeClass('failedSubmit');form.find(settings.field_selector).each(function(){if($(this).val()===$(this).data('default-value')){$(this).val('');}});if(settings.prevent_submit||form.hasClass('preventSubmit')){form.find(settings.field_selector).each(function(){$(this).blur();});if(form.find('.'+settings.invalid_class).add('.'+settings.error_class).length){form.addClass('failedSubmit');return($.isFunction(settings.prevent_submit_callback))?settings.prevent_submit_callback(form,i18n('submit_msg'),[i18n('submit_help')]):showFormError(form,i18n('submit_msg'),[i18n('submit_help')]);}