var registeredFields = new Array(); var singleValidation = false; var currentField = ""; var formURL = ""; function applyResults(results) { var count = 0; for(var result in results) { $("#" + result + "Error").html(results[result]); $("#" + result + "Error").fadeIn("slow"); count++; } if (!singleValidation) { for(var field in registeredFields) { if (results[field] == undefined) { $("#" + field + "Error").html(""); $("#" + field + "Error").fadeOut("slow"); } } } else { if (results[currentField] == undefined) { $("#" + currentField + "Error").html(""); $("#" + currentField + "Error").fadeOut("slow"); } } if (!singleValidation && (count == 0)) { $("#frmRequest")[0].submit(); } } function performFieldValidation(name) { registeredFields[name].value = $("#" + name).val(); fields = [registeredFields[name]]; performValidation(fields); } function performValidation(fields) { $.get(formURL, fields, function(data) { applyResults(data); singleValidation = false; currentField = ""; }, "json"); } function registerFieldValidation(fieldName) { $("#" + fieldName+ "Error").hide(); registeredFields[fieldName] = {name : fieldName, value: $("#" + fieldName).val()}; $("#" + fieldName).blur( function() { singleValidation = true; currentField = fieldName; performFieldValidation(fieldName); }); } function validateForm() { var index = 0; fields = new Array(); for (var name in registeredFields) { if ($("#" + name)[0].type == "radio") { registeredFields[name].value = $("#" + name)[0].checked? $("#" + name).val() : ""; } else { registeredFields[name].value = $("#" + name).val(); } fields[index++] = registeredFields[name]; } singleValidation = false; currentField = ""; performValidation(fields); return false; }