jQuery.validator.addMethod("checkPhone", function(value, element) { var form = $("#registration"); return ((form.find("#areaCode").val().length == 3) && (form.find("#prefix").val().length == 3) && (form.find("#suffix").val().length == 4)); }, ""); jQuery.validator.addMethod("checkOrgId", function(value, element) { return (value.length == 8) && /^\d+$/i.test(value); }, ""); jQuery.validator.addMethod("checkSurvey", function(value, element) { return (value != ""); }, ""); jQuery.validator.addMethod("checkAgreement", function(value, element) { return $("#agreement").is(":checked"); }, ""); // extend email checking jQuery.validator.addMethod("email", function(value, element) { return this.optional(element) || /^[a-zA-Z0-9/_'+&*\-]+(?:\.[a-zA-Z0-9/_'+&*\-]+)*@(?:[a-zA-Z0-9\-]+\.)+[a-zA-Z0-9\-]{2,63}$/.test(value); }); $(document).ready(function() { $("form[name=registration]").bind("registration.validate",function(e,validator) { }).validate({ ignore:[], highlight:false, onkeyup:false, rules: { "orgname" : {required : true}, "orgid" : {required : true, checkOrgId : true}, "user.name.firstname" : {required : true}, "user.name.lastname" : {required : true}, "user.phone.areaCode" : {required : true}, "user.phone.prefix" : {required : true}, "user.phone.suffix" : {required : true, checkPhone : true}, "user.email" : {required : true, email : true}, "survey" : {checkSurvey : true}, "agreement" : {checkAgreement : true} }, groups: { phone: "user.phone.areaCode user.phone.prefix user.phone.suffix" }, messages: { "orgname" : 'Required field', "orgid" : { required : 'Required field', checkOrgId : 'Invalid format' }, "user.name.firstname" : 'Required field', "user.name.lastname" : 'Required field', "user.phone.areaCode" : 'Required field', "user.phone.prefix" : 'Required field', "user.phone.suffix" : { required : 'Required field', checkPhone : 'Invalid format' }, "user.email" : { required : 'Required field', email : 'Invalid format'}, "survey" : 'Tell us how you heard about the vsp.com Clients & Employers site.', "agreement" : "You must agree to VSP's Terms of Service to continue." }, errorElement: "span", errorPlacement: function (error,element) { error.appendTo(element.parents().siblings("label")); } }) $('form[name=registration]').find('#orgname').focus(); $('#orgid').autotab({ format: 'numeric' }); $('#areaCode').autotab({ target: $('#prefix'), format: 'numeric' }); $('#prefix').autotab({ target: $('#suffix'), format: 'numeric', previous: $('#areaCode') }); $('#suffix').autotab({ target: $('#user\\.phone\\.extension'), previous: $('#prefix'), format: 'numeric' }); $('#user\\.phone\\.extension').autotab({ previous: $('#suffix'), format: 'numeric' }); $("#orgid").bind('change',function(e){ $("#orgIdMsg").text(''); }); });