PageSourceSearch

https://accordtec.ru/bitrix/templates/aspro_max/js/conditional/validation.js?17609582366077

js accordtec.ru collected 2026-10-08 04:58:43 UTC 6,077 bytes, 216 lines download raw bytes

1BX.Aspro.Utils.readyDOM(() => {
2  $.extend($.validator.messages, {
3    required: BX.message("JS_REQUIRED"),
4    email: BX.message("JS_FORMAT"),
5    equalTo: BX.message("JS_PASSWORD_COPY"),
6    minlength: BX.message("JS_PASSWORD_LENGTH"),
7    remote: BX.message("JS_ERROR"),
8    licenses_popup: BX.message("JS_REQUIRED_LICENSES"),
9  });
10
11  $.validator.addMethod(
12    "regexp",
13    function (value, element, regexp) {
14      var re = new RegExp(regexp);
15      return this.optional(element) || re.test(value);
16    },
17    BX.message("JS_FORMAT")
18  );
19
20  $.validator.addMethod(
21    "filesize",
22    function (value, element, param) {
23      return this.optional(element) || element.files[0].size <= param;
24    },
25    BX.message("JS_FILE_SIZE")
26  );
27
28  $.validator.addMethod(
29    "date",
30    function (value, element, param) {
31      var status = false;
32      if (!value || value.length <= 0) {
33        status = false;
34      } else {
35        // html5 date allways yyyy-mm-dd
36        var re = new RegExp("^([0-9]{4})(.)([0-9]{2})(.)([0-9]{2})$");
37        var matches = re.exec(value);
38        if (matches) {
39          var composedDate = new Date(matches[1], matches[3] - 1, matches[5]);
40          status =
41            composedDate.getMonth() == matches[3] - 1 &&
42            composedDate.getDate() == matches[5] &&
43            composedDate.getFullYear() == matches[1];
44        } else {
45          // firefox
46          var re = new RegExp("^([0-9]{2})(.)([0-9]{2})(.)([0-9]{4})$");
47          var matches = re.exec(value);
48          if (matches) {
49            var composedDate = new Date(matches[5], matches[3] - 1, matches[1]);
50            status =
51              composedDate.getMonth() == matches[3] - 1 &&
52              composedDate.getDate() == matches[1] &&
53              composedDate.getFullYear() == matches[5];
54          }
55        }
56      }
57      return status;
58    },
59    BX.message("JS_DATE")
60  );
61
62  $.validator.addMethod(
63    "extension",
64    function (value, element, param) {
65      param = typeof param === "string" ? param.replace(/,/g, "|") : "png|jpe?g|gif";
66      return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i"));
67    },
68    BX.message("JS_FILE_EXT")
69  );
70
71  $.validator.addMethod(
72    "captcha",
73    function (value, element, params) {
74      let $sid = $(element).closest("form").find('input[name="captcha_sid"]');
75      if (!$sid.length) {
76        $sid = $(element).closest("form").find('input[name="captcha_code"]');
77      }
78
79      let sid = $sid.val();
80
81      return $.validator.methods.remote.call(this, value, element, {
82        url: arAsproOptions["SITE_DIR"] + "ajax/check-captcha.php",
83        type: "post",
84        data: {
85          captcha_word: value,
86          captcha_sid: sid,
87        },
88      });
89    },
90    BX.message("JS_ERROR")
91  );
92
93  $.validator.addMethod(
94    "recaptcha",
95    function (value, element, param) {
96      if (BX.Aspro?.Captcha) {
97        return BX.Aspro.Captcha.validate(element);
98      }
99
100      return true;
101    },
102    BX.message("JS_RECAPTCHA_ERROR")
103  );
104
105  $.validator.addClassRules({
106    confirm_password: {
107      equalTo: 'input[name="REGISTER[PASSWORD]"]',
108      minlength: 6,
109    },
110    password: {
111      minlength: 6,
112    },
113    inputfile: {
114      extension: arAsproOptions["THEME"]["VALIDATE_FILE_EXT"],
115      filesize: 5000000,
116    },
117    captcha: {
118      captcha: "",
119    },
120    recaptcha: {
121      recaptcha: "",
122    },
123  });
124
125  $.validator.setDefaults({
126    highlight: function (element) {
127      $(element).parent().addClass("error");
128    },
129    unhighlight: function (element) {
130      $(element).parent().removeClass("error");
131    },
132    errorPlacement: function (error, element) {
133      error.insertBefore(element);
134    },
135    messages:{
136        licenses_popup: {
137            required : BX.message('JS_REQUIRED_LICENSES'),
138        },
139      licenses_subscribe: {
140            required : BX.message('JS_REQUIRED_LICENSES'),
141        },
142    },
143
144  });
145});
146
147BX.namespace('Aspro.Validation');
148
149BX.Aspro.Validation = {
150  appendSolutionField: (form) => {
151    const validateInputName = arAsproOptions.VALIDATION?.FORM_INPUT_NAME;
152
153    if (!form.querySelector(`[name="${validateInputName}"]`)) {
154      form.appendChild(
155        BX.create('input', {
156          attrs: {
157            type: 'hidden',
158            name: validateInputName,
159          }
160        })
161      );
162    }
163  }
164}
165
166$(document).on("click", ".captcha_reload", function (event) {
167  event.preventDefault();
168
169  const $captcha = $(this).parents(".captcha-row");
170  $.ajax({
171    url: arAsproOptions["SITE_DIR"] + "ajax/captcha.php",
172    success: function (text) {
173      $captcha.find("input[name=captcha_sid],input[name=captcha_code]").val(text);
174      $captcha.find("img").attr("src", "/bitrix/tools/captcha.php?captcha_sid=" + text);
175      $captcha.find("input[name=captcha_word]").val("").removeClass("error");
176      $captcha.find(".captcha_input").removeClass("error").find(".error").remove();
177    },
178  });
179});
180
181BX.addCustomEvent("onSubmitForm", function (eventdata) {
182  try {
183    if (typeof eventdata === "object" && eventdata && eventdata.form) {
184      if (!(eventdata.form instanceof Node)) {
185        eventdata.form = eventdata.form[0];
186      }
187
188      BX.Aspro?.Validation?.appendSolutionField?.(eventdata.form);
189
190      new Promise((resolve, reject) => {
191        if (BX.Aspro?.Captcha) {
192          BX.Aspro.Captcha.onSubmit(eventdata)
193            .then((result) => {
194              resolve(result);
195            })
196            .catch((e) => {
197              reject(e);
198            });
199
200          return;
201        }
202
203        resolve(true);
204      }).then((result) => {
205        if (result) {
206          eventdata.form.submit();
207          if (eventdata.form.closest(".form")) {
208            eventdata.form.closest(".form").classList.add("sending");
209          }
210        }
211      });
212    }
213  } catch (e) {
214    console.error(e);
215  }
216});

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.