Professional Documents
Culture Documents
Ok, so assume you have a standard form. You need to do some error checking on the form before submission finally takes place. In the past, I've found myself writing JS form field validation, then writing server side field validation as well. In playing with jQuery and AJAX, I've put together a nice package that will do server side validation, without leaving the form, thereby removing the need for javascript validation completely. The way this works uses a php post page, which accepts a parameter to determine that the form was submitted via ajax, then returns either a XML string, or a redirect to the calling page with the error(s) attached.
Required fields marked with * Email Address* Your email address will be required for log in. Try: test@example.com Password* Choose your password wisely. Confirm Password* Type your password again, just to make sure. Your Name* This will be used to tell people who you are. Location* Where are you from? ex: "Glastonbury, CT," "Eastern Time Zone," "North America." Create Account Now
Plug In Source:
$.fn.ajaxSubmit = function(e) { /* Change a form's submission type to ajax */ this.submit(function(){ var params = {}; $(this) .find("input[@checked], input[@type='text'], input[@type='hidden'], input[@type='password'], input[@type='submit'], option[@selected], textarea") .filter(":enabled") .each(function() { params[ this.name || this.id || this.parentNode.name || this.parentNode.id ] = this.value; }); $("body").addClass("curWait"); $.post(this.getAttribute("action") + "?call=ajax", params, function(xml){ $("body").removeClass("curWait"); strError = "Unable to submit form. Please try again later."; oFocus = null; $("AjaxResponse", xml).each(function() { strRedirect = this.getAttribute("redirecturl"); strError = this.getAttribute("error"); oFocus = this.getAttribute("focus"); }); if (strError.length == 0) { window.location = strRedirect; } else { alert("The following errors were encountered:\n" + strError); $("div.formErrors").html("<h3>Error<\/h3><ul>" + strError.replace(/(\t)(.+)/g, "<li>$2<\/li>") + "<\/ul>").filter(":hidden").fadeIn("normal"); if (oFocus) $("#" + oFocus).get(0).focus(); } }); return false; }); return this; }
var params = {}; $(this) .find("input[@checked], input[@type='text'], input[@type='hidden'], input[@type='password'], input[@type='submit'], option[@selected], textarea") .filter(":enabled") .each(function() { params[ this.name || this.id || this.parentNode.name || this.parentNode.id ] = this.value; });
2. Add a "curWait" class to the body, giving a hourglass symbol
$("body").addClass("curWait");
3. Post, via AJAX to the current form's action ("dbFormSubmission"), adding a "?call=ajax" to the URL
Upon completion of submit, the page will process the response: Response Sample
<AjaxResponse error="	Password is a reqiured field. 	Name is a reqiured field. 	Location is a reqiured field. " focus="pwdAccountPassword" redirecturl="formSubmissionSuccess.php" />
1. Set variable defaults
strError = "Unable to submit form. Please try again later."; oFocus = null;
2. Read the XML
} else { alert("The following errors were encountred:\n" + strError); $("div.formErrors").html("<h3>Error<\/h3><ul>" + strError.replace(/(\t)(.+)/g, "<li>$2<\/li>") + "<\/ul>").filter(":hidden").fadeIn("normal");
Also, we'll attempt to regain focus on the appropriate field
converted by Web2PDFConvert.com
converted by Web2PDFConvert.com