diff --git a/src/modules/uk.js b/src/modules/uk.js index 4ef0fa9..93bd1c5 100644 --- a/src/modules/uk.js +++ b/src/modules/uk.js @@ -97,19 +97,20 @@ */ $.formUtils.addValidator({ name: 'ukutr', - validatorFunction: function (val) + validatorFunction: function (utr) { - var weights = [0, 6, 7, 8, 9, 10, 5, 4, 3, 2, 0], + var weights = [0, 6, 7, 8, 9, 10, 5, 4, 3, 2], checkDigits = [2, 1, 9, 8, 7, 6, 5, 4, 3, 2, 1], - checkSum = 0, - utr = val + 'K'; + checkSum = 0; - if( /\d{10}K/.test( utr ) ){ + if (/\d{10}/.test(utr) && utr.length === 10) + { for (var i = 0; i < 10; i++) { checkSum += utr[ i ] * weights[ i ]; } - if( utr.charAt( 0 ) === checkDigits[ checkSum % 11 ]){ + if (parseInt(utr.charAt(0)) === checkDigits[checkSum % 11]) + { return true; } } diff --git a/test/qunit.html b/test/qunit.html index 4221249..a8053a3 100644 --- a/test/qunit.html +++ b/test/qunit.html @@ -984,7 +984,32 @@ }); }); + /* + * UK VALIDATION + */ + test("UK UTR validation", function(){ + + clearForm(); + var links = [ + {val:'9300960004', isValid:true}, + {val:'7795475945', isValid:true}, + {val:'2010335150', isValid:true}, + {val:'3317055678', isValid:true}, + {val:'2444339765', isValid:true}, + {val:'3867839121', isValid:true}, + {val:'38678391210', isValid:false}, + {val:'386783912', isValid:false}, + {val:'1779560363', isValid:false}, + {val:'8648200373', isValid:false}, + {val:'9300648179', isValid:false} + ]; + + $.each(links, function(i, obj) { + runTest(obj, 'ukutr'); + }); + + }); // TODO: Write more tests... }