From 60eeb7faf1a75c58e2c64aa01da2f380e2212815 Mon Sep 17 00:00:00 2001 From: Miguel Araujo Perez Date: Thu, 31 Mar 2011 21:56:26 +0200 Subject: [PATCH] Improving django-uni-form ajax validation: * Adding non_field_errors * Small bug fix, that broke validation when having a field named `length` --- .../ajax_validation/js/jquery-uni-form.js | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/ajax_validation/media/ajax_validation/js/jquery-uni-form.js b/ajax_validation/media/ajax_validation/js/jquery-uni-form.js index bf80c87..e27b2db 100644 --- a/ajax_validation/media/ajax_validation/js/jquery-uni-form.js +++ b/ajax_validation/media/ajax_validation/js/jquery-uni-form.js @@ -1,13 +1,29 @@ -function uniform_callback(data, form) { +// Cleans errors of a uniform form +function uniform_clean_errors(form) { var field_divs = $(form).find(".ctrlHolder").filter(".error"); field_divs.removeClass("error"); field_divs.find(".errorField").remove(); - $.each(data.errors, function(key, val) { - var field_div = $(form).find(".ctrlHolder").filter("#div_" + key); - field_div.addClass("error"); - field_div.prepend('

' - + val + '

'); - }); + $(form).find("#errorMsg").hide('slow'); } +// Adds errors to the form based on data.errors +function uniform_callback(data, form) { + uniform_clean_errors(form); + + // $.each() cannot be used here, because if we have a field called length it fails + for (key in data.errors) { + // General non_field_errors + if (key == "__all__") { + $(form).prepend("

Errors

    "); + + $.each(val, function(key, error) { + $("#errorMsg ol").append("
  1. " + error + "
  2. "); + }); + }; + + var field_div = $(form).find(".ctrlHolder").filter("#div_id_" + key); + field_div.addClass("error"); + field_div.prepend('

    ' + data.errors[key] + '

    '); + } +}