/** *$title Ajax Captcha w/ form validation using JQuery *@author Jovanie C. Valdez *@copyright Copyright © 2008, Jovanie C. Valdez *@datecreated July 29, 2008 *@version 1.0 */ $(function(){ $("#phone").keypress(function (e) { if( e.which!=8 && e.which!=0 && e.which!=45 && (e.which<48 || e.which>57)) { return false; } }); $.validator.addMethod("phone", function(phone_number, element) { var digits = "0123456789"; var phoneNumberDelimiters = "()- ext."; var validWorldPhoneChars = phoneNumberDelimiters + "+"; var minDigitsInIPhoneNumber = 10; s=stripCharsInBag(phone_number,validWorldPhoneChars); return this.optional(element) || isInteger(s) && s.length >= minDigitsInIPhoneNumber; }, "Please enter a valid phone number"); var validator = $("#myform").bind("invalid-form.validate", function() { var errors = validator.numberOfInvalids(); if (errors) { var message = errors == 1 ? 'You missed 1 field. It has been highlighted below' : 'You missed ' + errors + ' fields. They have been highlighted below'; $(".summary").html(message).show(); } }).validate({ rules: { name:"required", email:{required:true,email:true}, department:"required", part_num:"required", message:"required", key:"required", phone:{required:true,phone:true} }, messages: { name:"Please enter a full name", email:"Please enter a valid email", department:"Please select a department", part_num:"Please enter an order or part number", message:"Please enter a message", phone:"Please enter a valid phone number", key: "Please enter the code" } }); }); // function helpers function isInteger(s) { var i; for (i = 0; i < s.length; i++) { var c = s.charAt(i); if (((c < "0") || (c > "9"))) return false; } return true; } function stripCharsInBag(s, bag) { var i; var returnString = ""; // Search through string's characters one by one. // If character is not in bag, append to returnString. for (i = 0; i < s.length; i++) { // Check that current character isn't whitespace. var c = s.charAt(i); if (bag.indexOf(c) == -1) returnString += c; } return returnString; }