diff --git a/additional-methods.js b/additional-methods.js index a133df787..9e3fd4836 100644 --- a/additional-methods.js +++ b/additional-methods.js @@ -155,7 +155,337 @@ jQuery.validator.addMethod("dateITA", function(value, element) { jQuery.validator.addMethod("dateNL", function(value, element) { return this.optional(element) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(value); -}, "Vul hier een geldige datum in."); +}, "Please enter a correct date"); + +/** + * Dutch phone numbers have 10 digits (or 11 and start with +31). + */ +jQuery.validator.addMethod("phoneNL", function(value, element) { + return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(value); +}, "Please specify a valid phone number."); + +jQuery.validator.addMethod("mobileNL", function(value, element) { + return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(value); +}, "Please specify a valid mobile number"); + +jQuery.validator.addMethod("postalcodeNL", function(value, element) { + return this.optional(element) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(value); +}, "Please specify a valid postal code"); + +/** + * Dutch bank account numbers (not 'giro' numbers) have 9 digits + * and pass the '11 check'. + * We accept the notation with spaces, as that is common. + * acceptable: 123456789 or 12 34 56 789 + */ +jQuery.validator.addMethod("bankaccountNL", function(value, element) { + if (this.optional(element)) { + return true; + } + if (!(/^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test(value))) { + return false; + } + // now '11 check' + var account = value.replace(/ /g,''); // remove spaces + var sum = 0; + var len = account.length; + for (var pos=0; pos1) { + var count = 0; + var type = "?"; + var l = 0; + if (/^\d[acn]/.test(bbanformat)) { + l = 1; + } else { + l = 2; + } + + count = bbanformat.substring(0, l); + type = bbanformat.substring(l, l + 1); + bbanformat = bbanformat.substring(l + 1, bbanformat.length); + if (count === 0) { + break; // this indicates illegal bbanformat string: MAYBE HANDLE??? + } + var typeexpression = ''; + switch (type) { + case 'a': // alphabet letter + typeexpression = '[A-Z]'; + break; + case 'c': // character (digit or letter) + typeexpression = '[\\dA-Z]'; + break; + case 'n': // number (digit actually) + typeexpression = '\\d'; + break; + } + bbanpattern = bbanpattern + typeexpression + "{" + count + "}"; + } + var ibanregexp = new RegExp("^[A-Z]{2}\\d{2}" + bbanpattern + "$", ""); + if (!(ibanregexp.test(iban))) { + return false; // invalid country specific format + } + + // now check the checksum, first convert to digits + var ibancheck = iban.substring(4,iban.length) + iban.substring(0,4); + var ibancheckdigits = ""; + var leadingZeroes = true; + for (var i =0; i