$(function(){ $.each($('form[validate=true]'), function(i, form){ $(form).submit(validate); }); }); function validate(e){ var form = $(e.target); if(form.data('validated') == true){ return true; } $.post(form.attr('action') + '/validate', $(e.target).serialize(), function(data){ // clear all error messages $('.error').text(''); if($.isEmptyObject(data)){ form.data('validated', true); form.submit(); } else { displayErrors(data); } }, 'json'); return false; } function displayErrors(data){ $.each(data, function(key, value){ $('#error-' + key).text(value); }); }