jQuery.validator.addMethod("phoneUS", function(phone_number, element) { phone_number = phone_number.replace(/\s+/g, ""); return this.optional(element) || phone_number.length > 9 && phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); }, "Please specify a valid phone number"); jQuery.validator.addMethod("postalcodeCAN", function(postalCode, element) { return postalCode.match(/^[a-zA-Z][0-9][a-zA-Z](-| )?[0-9][a-zA-Z][0-9]$/); }, "Please specify a valid postal code"); jQuery.validator.addMethod("creditcard2", function(testNum, element) { return testNum.match(/^((4\d{3})|(5[1-5]\d{2}))(-?|\040?)(\d{4}(-?|\040?)){3}|^(3[4,7]\d{2})(-?|\040?)\d{6}(-?|\040?)\d{5}$/); }, "Please specify a valid Credit Card Num"); jQuery.validator.addMethod("creditcardtype", function(testType, element) { var returnValue =false; switch (Test) { case 'VISA': returnValue =true; break; case 'MASTERCARD': returnValue = true; break; case 'AMEX': returnValue = true; break; default: returnValue = false; break; } return }, "Invalid Credit Card Type"); jQuery.validator.addMethod("zipcode", function(postalcode, element) { return this.optional(element) || postalcode.match(/(^\d{5}(-\d{4})?$)|(^[ABCEGHJKLMNPRSTVXYabceghjklmnpstvxy]{1}\d{1}[A-Za-z]{1} ?\d{1}[A-Za-z]{1}\d{1})$/); }, "Please specify a valid postal/zip code"); jQuery.validator.addMethod( "CCExp", function(value, element) { var minMonth = new Date().getMonth() + 1; var minYear = new Date().getFullYear(); //var $month = $(params.cardExpMonth); // var $year = $(params.cardExpYear); // alert(value.length); if (value.length >=4) { return true; } else { return false; } } , "Your Credit Card Expiration date is invalid."); var rulesUS = { postalcode: { required: true, zipcode: true } , phone: { required: true, phoneUS:true }, fax: { required: false, phoneUS:true }, provStateSelect: { required: true }, province: { required: false } }; var rulesCAN = { postalcode: { required: true, postalcodeCAN: true }, phone: { required: true, phoneUS:true }, fax: { required: false, phoneUS:true }, provStateSelect: { required: true }, province: { required: false } }; var rulesINT = { postalcode: { required: true }, phone: { required: true }, fax: { required: false }, provStateSelect: { required: false }, province: { required: true } }; var payByCC_RULES = { CreditCardHolder: { required: true, minlength:4 }, CreditCardNum: { required: true, creditcard2: true }, CreditCardType: { required: false }, CreditCardCVV: { required: true, minlength:3 }, CreditCardExpDate: { required: true, CCExp: true //minlength: 10 } }; var payByVISA_RULES = { CreditCardHolder: { required: true, minlength:4 }, CreditCardNum: { required: true, creditcard2: true }, CreditCardType: { required: true }, CreditCardCVV: { required: true, minlength:3 }, CreditCardExpDate: { required: true, CCExp: true //minlength: 10 } }; var payByINV_RULES = {CreditCardHolder: { required: false }, CreditCardNum: { required: false }, CreditCardType: { required: false }, CreditCardCVV: { required: false }, CreditCardExpDate: { required: false } }; var scannerFormRules = { }; $(document).ready(function() { var loader = jQuery('
loading...
') .css({position: "relative", top: "1em", left: "25em"}) .appendTo("body") .hide(); jQuery().ajaxStart(function() { loader.show(); }).ajaxStop(function() { loader.hide(); }).ajaxError(function(a, b, e) { throw e; }); // validate signup form on keyup and submit validator = $("#scannerForm").validate ( { rules: { company: { required: true, minlength: 2 //or min?? }, firstName: { required: true, minlength: 2 //or min?? }, city: { required: true, minlength: 2, maxlength: 20 //or min?? }, lastName: { required: true, minlength: 2 }, address1: { required: true, minlength: 5 }, phone: { required: true, phoneUS:true }, fax: { required: false, phoneUS:true }, country: { required: true }, province: { required: false }, provStateSelect: { required: true }, email: { required: true, email: true }, booth: { required: false, maxlength: 15 }, postalcode: { required: true, postalcodeCAN: true }, SC_PKG: { required: true }, PaymentMethod: { required:true }, LQ_EMAILADDRS_ADD: { required: false, email: true }, CreditCardHolder: { required: false }, CreditCardNum: { required: false }, CreditCardType: { required: false }, CreditCardCVV: { required: true }, CreditCardExpDate: { required: false, CCExp: true }, LQ_EMAILADDRS_ADD: { required: false, email: true } }, messages: { firstName: { required: "Given name is required", minlength: jQuery.format("Given name must be at least two characters in length"), maxlength: jQuery.format("Given name must be at least two characters in length") }, lastName: { required: "Family name is required", minlength: jQuery.format("Family name must be at least one character in length") }, company: { required: "Company name is required", minlength: jQuery.format("Company name must be at least two characters in length") }, city: { required: "City is required", minlength: jQuery.format("City name must be at least one character in length") }, booth: { maxlength: jQuery.format("Maximum 15 Characters") }, email: { required: "Email is required", email: jQuery.format("Email must be in the format xx@x.xxx") }, phone: { required: "Phone number is required", phoneUS: "Phone number format must be 8887778613 or 888-777-8613" }, fax: { phoneUS: "Fax number format must be 8887778613 or 888-777-8613" }, address1: { required: "Address is required", minlength: jQuery.format("Address must be at least five characters in length") }, postalcode: { required: "Postal Code is required", postalcodeCAN: 'Postal Code is required', zipcode: "ip Code is required" }, country: { required: "Country is requierd" }, province: { required: "Province/State is required" }, provStateSelect: { required: "Province/State is required" }, PaymentMethod:{ required: "Payment Method Required" }, SC_PKG: { required: "Please select a package before continuing." }, LQ_EMAILADDRS_ADD: { email: "emails must be in the format xx@x.xxx" } , CreditCardHolder: { required: "Creditcard holder name is required" }, CreditCardNum: { required: "Creditcard number is required", creditcard2 : "Creditcard format is incorrect (16 digits for Visa & MasterCard, 15 digits for American Express)" }, CreditCardCVV: { required: "CVD number is required", }, AMOUNT_TO_CHARGE: { required: "Charge Amount Required", min:"Must be greater than $1" } }, invalidHandler: function(e, validator) { var errors = validator.numberOfInvalids(); if (errors) { //showFormErrorDialog(); }} , showErrors: function(errorMap, errorList) { var controlID; var controlSelector; var msg; var controlValue; var controlType; var controlName; var tipSelector; try { if (errorList.length >1) { this.prepareForm(); // return; } var myErrorList ={}; if ((this.currentElements[0] === undefined)) { myErrorList = this.invalid; //return; } else { controlValue =this.currentElements[0].value; controlType = this.currentElements[0].type; controlName = this.currentElements[0].name; //myErrorList = Array(controlName); myErrorList[controlName] = "HOLDER"; } for (var error in myErrorList) { controlID = error; controlType = $("#"+controlID).attr("type"); if (controlType === undefined) { controlType = $('[name="'+controlID+'"]').attr("type"); controlID = $('[name="'+controlID+'"]').attr("name"); controlValue = $("#"+controlID).val(); $('[name="'+controlID+'"]').val; tipSelector ="#"+controlID +'_div'; } else { //controlID = this.currentElements[0].id; controlValue = $("#"+controlID).val(); tipSelector ="#"+controlID ; } controlSelector="#"+controlID; msg=errorMap[controlID]; $(tipSelector).bt( msg, { trigger: ['none','none'], // clickAnywhereToClose: false, closeWhenOthersOpen: true, positions: ['top'], width: 400 }); if ((!this.settings.rules[controlID].required) && (controlValue =="" )) { $(controlSelector).siblings('span').hide(); $(controlSelector +'_div > span').hide(); } else { $(controlSelector).siblings('span').show(); $(controlSelector +'_div > span').show(); } // if ((this.numberOfInvalids() == 0) ) if ((this.invalid[controlID] === undefined) ) { //$(controlSelector+"ValidationImg").attr('src','images/greencheck2.png'); $(controlSelector).siblings('span').children('img').attr('src','images/greencheck2.png'); $(controlSelector+"_div > span> img").attr('src','images/greencheck2.png'); $(tipSelector).btOff(); } else { $(controlSelector).siblings('span').children('img').attr('src','images/redx2.png'); $(tipSelector).btOn(); $(controlSelector+"_div > span> img").attr('src','images/redx2.png'); // $(controlSelector).focus(); } } } catch(err) {} } //end validator //validator.rules('add',scannerFormRules); }); $('#testBtn').click(function() { validateTab(); validator.element("#firstName"); validator.element('[name="SC_PKG"]'); //alert(validation.element('[name="fax"]')); }); });