Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function () {/// Выключить стандартную валидацию целых чисел - она не пропускает пробелы
- $.validator.addMethod("modelValidation", function (value, element) {
- var $el = $(element);
- var view = $el.closest("[data-id]");
- if (view.length === 0) {
- return true;
- }
- var cid = view.attr("data-id");
- var model = window.Validation.models[cid];
- if (!model) {
- return true;
- }
- var actionName = $el.attr("data-bind") || $el.attr("name");
- var result = model.validateAttr.call(model, actionName, value);
- if (result !== true) {
- var validator = $el.closest("form").data().validator;
- validator.settings.messages[$el.attr("name")].modelValidation = result;
- $el.closest("form").data('validator', validator);
- var unobtrusive = $el.closest("form").data().unobtrusiveValidation;
- unobtrusive.options.messages[$el.attr("name")].modelValidation = result;
- $el.closest("form").data('unobtrusiveValidation', unobtrusive);
- return false;
- }
- return true;
- });
- /**
- * проверяет существование подобного логина в системе;
- */
- $.validator.addMethod("clientLogin", function (value, element) {
- var validator = this;
- var isNeeded = $(element).attr("data-val-clientLogin-need") || true;
- if (validator.optional(element)) {
- return "dependency-mismatch";
- }
- var previous = validator.previousValue(element);
- if (!validator.settings.messages[element.name]) {
- validator.settings.messages[element.name] = {};
- }
- previous.originalMessage = validator.settings.messages[element.name].checkCashClosedGroup;
- if (validator.pending[element.name]) {
- return "pending";
- }
- if (previous.old === value) {
- return previous.valid;
- }
- $(element).trigger('checkingEmailForExistStart');
- previous.old = value;
- validator.startRequest(element);
- var data = {
- login: value
- };
- $.ajax({
- url: "/Agents/Clients/CheckLogin",
- mode: "abort",
- type: "GET",
- port: "validate" + element.name,
- dataType: "json",
- data: data,
- success: function (response) {
- if (response.Message) {
- validator.settings.messages[element.name].clientLogin = response.Message;
- }
- var valid = (isNeeded == 'true') ? response.Status : !response.Status;
- if (valid) {
- var submitted = validator.formSubmitted;
- validator.prepareElement(element);
- validator.formSubmitted = submitted;
- validator.successList.push(element);
- validator.showErrors();
- } else {
- var errors = {};
- var message = validator.settings.messages[element.name].clientLogin;
- errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
- validator.showErrors(errors);
- }
- previous.valid = valid;
- validator.stopRequest(element, valid);
- $(element).trigger('checkingEmailForExistStop');
- }
- });
- return "pending";
- });
- $.validator.addMethod("loginbusy", function (value, element) {
- var validator = this;
- if (validator.optional(element)) {
- return "dependency-mismatch";
- }
- var previous = validator.previousValue(element);
- if (!validator.settings.messages[element.name]) {
- validator.settings.messages[element.name] = {};
- }
- previous.originalMessage = validator.settings.messages[element.name].checkCashClosedGroup;
- if (validator.pending[element.name]) {
- return "pending";
- }
- if (previous.old === value) {
- return previous.valid;
- }
- previous.old = value;
- validator.startRequest(element);
- var data = {
- login: value
- };
- $(element).trigger('checkingForLoginBusyStart');
- $.ajax({
- url: "/Agents/Registration/CheckLoginAccessibility",
- mode: "abort",
- type: "GET",
- port: "validate" + element.name,
- dataType: "json",
- data: data,
- success: function (response) {
- validator.settings.messages[element.name].clientLogin = response.Message;
- if (response.Status) {
- if (response.Object){
- var submitted = validator.formSubmitted;
- validator.prepareElement(element);
- validator.formSubmitted = submitted;
- validator.successList.push(element);
- validator.showErrors();
- }
- else{
- var errors = {};
- var message = 'Пользователь с указанным e-mail уже зарегистрирован.<br /> <a id="useExistingLogin">Использовать существующий логин?</a>';
- errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
- validator.showErrors(errors);
- }
- }
- previous.valid = response.Object;
- validator.stopRequest(element, response.Status);
- $(element).trigger('checkingForLoginBusyStop');
- }
- });
- return "pending";
- });
- $.validator.addMethod("invalidpassword", function (value, element) {
- if ($(element).attr('data-val-invalidpassword-enable') == "true") {
- return false;
- }
- return true;
- });
- $.validator.addMethod("email", function (value) {
- var regexp = /^[a-zA-Z0-9\._%+-]+@([A-Z0-9-]+\.){1,2}[A-Z]{2,6}$/igm;
- value = $.trim(value);
- if (regexp.test(value)) {
- return true;
- }
- return false;
- });
- $.validator.addMethod("phone", function (value) {
- var regexp = /(^\s*\+?\s*(7|8)?([\s\-\(]*)?\s*(\d[\-\s\)]*){9}\d\s*$)|(^\s*(\d([\s\-]*)){5,9}$)/i;
- if (regexp.test(value)) {
- return true;
- }
- return false;
- });
- $.validator.addMethod("minMoney", function (value, element) {
- if (_.isUndefined(value) || value.length === 0) {
- return true;
- }
- var minValue = parseInt($(element).data("val-minmoney-value"), 10) || 0;
- var sum = parseInt(value.replace(/\D/g, ''), 10);
- if (sum !== false && sum < minValue) {
- return false;
- }
- return true;
- });
- $.validator.addMethod("maxMoney", function (value, element) {
- if (_.isUndefined(value) || value.length === 0) {
- return true;
- }
- var maxValue = parseInt($(element).data("val-maxmoney-value").replace(/\D/g, ''), 10) || Number.MAX_VALUE;
- var sum = parseInt(value.replace(/\D/g, ''), 10);
- if (sum !== false && sum > maxValue) {
- return false;
- }
- return true;
- });
- /// Положительное целое число
- $.validator.addMethod("positiveInteger", function (value) {
- if (_.isUndefined(value) || value.length == 0) {
- return true;
- }
- value = value.replace(/\D/g, '');
- var sum = parseInt(value);
- if (sum === false || _.isNaN(sum) || sum <= 0 || value != sum) {
- return false;
- }
- return true;
- });
- $.validator.addMethod("minlength", function (value, element) {
- var defaultLenght = 6;
- if (_.isUndefined(value) || value.length === 0) {
- return true;
- }
- var length = value.length,
- customValue = $(element).attr("data-val-minlenght-value"),
- minLength = customValue || defaultLenght;
- return length >= minLength;
- });
- $.validator.addMethod("balance", function (value) {
- var currentBalance = parseInt($('#balanceValue').text().replace(/\D/g, ''));
- if (_.isUndefined(value)|| value.length == 0 || parseInt(value.replace(/\D/g, '')) > currentBalance) {
- return false;
- }
- return true;
- });
- $.validator.addMethod("yandexWallet", function (value) {
- var minLength = 11;
- var maxLength = 26;
- if (_.isUndefined(value) || value.length === 0) {
- return true;
- }
- var length = value.length,
- N = value.charAt(0).toString(),
- X = value.substr(1, N),
- Z = value.substr(length - 2, 2).toString(),
- Y = value.substr((N + X).length, length - (N + X + Z).length);
- var xArray = X.split('').reverse();
- var yArray = Y.split('').reverse();
- var result = 0;
- var a = 70;
- for (var index = 0; index < 20; index++) {
- var yValue = yArray[index];
- var tValue = (_.isUndefined(yValue) || yValue == 0) ? 10 : yValue;
- result = (result + (tValue * a) % 99) % 99;
- a = (13 * a) % 99;
- }
- for (var index = 0; index < 10; index++) {
- var xValue = xArray[index];
- var tValue = (_.isUndefined(xValue) || xValue == 0) ? 10 : xValue;
- result = (result + (tValue * a) % 99) % 99;
- a = (13 * a) % 99;
- }
- result += 1;
- result = result < 10 ? "0" + result : result;
- if (length < minLength || length > maxLength || N === "0" || Z === "00" || result != Z || Y.length > 20) {
- return false;
- }
- return true;
- });
- $.validator.unobtrusive.adapters.addBool("clientLogin");
- $.validator.unobtrusive.adapters.addBool("inn");
- $.validator.unobtrusive.adapters.addBool("phone");
- $.validator.unobtrusive.adapters.addBool("mandatory", "required");
- $.validator.unobtrusive.adapters.addBool("minMoney");
- $.validator.unobtrusive.adapters.addBool("maxMoney");
- $.validator.unobtrusive.adapters.addBool("positiveInteger");
- $.validator.unobtrusive.adapters.addBool("minlength");
- $.validator.unobtrusive.adapters.addBool("balance");
- $.validator.unobtrusive.adapters.addBool("loginbusy");
- $.validator.unobtrusive.adapters.addBool("invalidpassword");
- $.validator.unobtrusive.adapters.addBool("yandexWallet");
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement