PageSourceSearch

https://rac.com.au/sitecore%20modules/Web/ExperienceForms/scripts/formsextensions.validate.js

js rac.com.au collected 2026-10-02 06:38:24 UTC 3,297 bytes, 123 lines download raw bytes

1$.validator.setDefaults({ ignore: ":hidden:not(.fxt-captcha)" });
2
3/**
4 * Google Recaptcha
5 */
6var reCaptchaArray = reCaptchaArray || [];
7$.validator.unobtrusive.adapters.add("recaptcha", function (options) {
8    options.rules["recaptcha"] = true;
9    if (options.message) {
10        options.messages["recaptcha"] = options.message;
11    }
12});
13
14$.validator.addMethod("recaptcha", function (value, element, exclude) {
15    return true;
16});
17var recaptchasRendered = false;
18var loadReCaptchas = function () {
19    for (var i = 0; i < reCaptchaArray.length; i++) {
20        var reCaptcha = reCaptchaArray[i];
21        if (reCaptcha.IsRendered === undefined) {
22            reCaptcha.IsRendered = true;
23            reCaptcha();
24        }
25    }
26};
27
28/**
29 * File upload Content Type
30 */
31$.validator.unobtrusive.adapters.addSingleVal("contenttype", "allowedcontenttypes");
32
33$.validator.addMethod("contenttype", function (value, element, allowedcontenttypes) {
34    if (!this.optional(element)) {
35        for (var i = 0; i < element.files.length; i++) {
36            if (allowedcontenttypes.indexOf(element.files[i].type) < 0) {
37                return false;
38            }
39        }
40    }
41    return true;
42});
43
44/**
45 * File upload File Size
46 */
47$.validator.unobtrusive.adapters.addSingleVal("filesize", "maxfilesize");
48$.validator.addMethod("filesize", function (value, element, maxfilesize) {
49    if (!this.optional(element)) {
50        for (var i = 0; i < element.files.length; i++) {
51            if (element.files[i].size > maxfilesize) {
52                return false;
53            }
54        }
55    }
56    return true;
57});
58
59// Date Time Span Validator
60
61$.validator.unobtrusive.adapters.add('timespan', ['min', 'max', 'unit'], function(options) {
62  options.rules['timespan'] = [options.params.min, options.params.max, options.params.unit];
63  options.messages['timespan'] = options.message;
64});
65
66
67$.validator.addMethod("timespan", function (value, element, params) {
68  if (!this.optional(element)) {
69    var unit = params[2];
70    var minvalue = params[0];
71    var maxvalue = params[1];
72
73    var valueToValidate = 0;
74
75    switch (unit) {
76      case 'days':
77        valueToValidate = getDays(value);
78        break;
79      case 'months':
80        valueToValidate = getMonths(value);
81        break;
82      case 'years':
83        valueToValidate = getYears(value);
84        break;
85    }
86
87    var isValid = true;
88
89    if (typeof minvalue !== 'undefined' && valueToValidate < minvalue)
90      isValid = false;
91
92    if (typeof maxvalue !== 'undefined' && valueToValidate > maxvalue)
93      isValid = false;
94
95    return isValid;
96  }
97  return true;
98});
99
100function getDays(date) {
101  var today = new Date();
102  return Math.floor((today - new Date(date)) / (1000 * 60 * 60 * 24));
103}
104
105function getYears(date) {
106  var today = new Date();
107  var diffYears = today.getFullYear() - new Date(date).getFullYear();
108  var temp = today;
109
110  temp.setFullYear(temp.getFullYear() - diffYears);
111
112  if (new Date(date) > temp)
113    diffYears--;
114
115  return diffYears;
116}
117
118function getMonths(date) {
119  var today = new Date();
120  var d = new Date(date);
121
122  return (today.getFullYear() - d.getFullYear()) * 12 + today.getMonth() - d.getMonth();
123}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.