123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- (function (factory) {
- 'use strict';
- if (typeof define === 'function' && define.amd) {
- define([
- 'jquery',
- 'mage/validation',
- 'mage/translate'
- ], factory);
- } else {
- factory(jQuery);
- }
- }(function ($) {
- 'use strict';
- $.each({
- 'validate-grouped-qty': [
- function (value, element, params) {
- var result = false,
- total = 0;
- $(params).find('input[data-validate*="validate-grouped-qty"]').each(function (i, e) {
- var val = $(e).val(),
- valInt;
- if (val && val.length > 0) {
- result = true;
- valInt = parseFloat(val) || 0;
- if (valInt >= 0) {
- total += valInt;
- } else {
- result = false;
- return result;
- }
- }
- });
- return result && total > 0;
- },
- $.mage.__('Please specify the quantity of product(s).')
- ],
- 'validate-one-checkbox-required-by-name': [
- function (value, element, params) {
- var checkedCount = 0,
- container;
- if (element.type === 'checkbox') {
- $('[name="' + element.name + '"]').each(function () {
- if ($(this).is(':checked')) {
- checkedCount += 1;
- return false;
- }
- });
- }
- container = '#' + params;
- if (checkedCount > 0) {
- $(container).removeClass('validation-failed');
- $(container).addClass('validation-passed');
- return true;
- }
- $(container).addClass('validation-failed');
- $(container).removeClass('validation-passed');
- return false;
- },
- $.mage.__('Please select one of the options.')
- ],
- 'validate-date-between': [
- function (value, element, params) {
- var minDate = new Date(params[0]),
- maxDate = new Date(params[1]),
- inputDate = new Date(element.value),
- message;
- minDate.setHours(0);
- maxDate.setHours(0);
- if (inputDate >= minDate && inputDate <= maxDate) {
- return true;
- }
- message = $.mage.__('Please enter a date between %min and %max.');
- this.dateBetweenErrorMessage = message.replace('%min', minDate).replace('%max', maxDate);
- return false;
- },
- function () {
- return this.dateBetweenErrorMessage;
- }
- ],
- 'validate-dob': [
- function (val, element, params) {
- var dob = $(element).parents('.customer-dob'),
- dayVal, monthVal, yearVal, dobLength, day, month, year, curYear,
- validYearMessage, validateDayInMonth, validDateMessage, today, dateEntered;
- $(dob).find('.' + this.settings.errorClass).removeClass(this.settings.errorClass);
- dayVal = $(dob).find(params[0]).find('input:text').val();
- monthVal = $(dob).find(params[1]).find('input:text').val();
- yearVal = $(dob).find(params[2]).find('input:text').val();
- dobLength = dayVal.length + monthVal.length + yearVal.length;
- if (params[3] && dobLength === 0) {
- this.dobErrorMessage = $.mage.__('This is a required field.');
- return false;
- }
- if (!params[3] && dobLength === 0) {
- return true;
- }
- day = parseInt(dayVal, 10) || 0;
- month = parseInt(monthVal, 10) || 0;
- year = parseInt(yearVal, 10) || 0;
- curYear = (new Date()).getFullYear();
- if (!day || !month || !year) {
- this.dobErrorMessage = $.mage.__('Please enter a valid full date.');
- return false;
- }
- if (month < 1 || month > 12) {
- this.dobErrorMessage = $.mage.__('Please enter a valid month (1-12).');
- return false;
- }
- if (year < 1900 || year > curYear) {
- validYearMessage = $.mage.__('Please enter a valid year (1900-%1).');
- this.dobErrorMessage = validYearMessage.replace('%1', curYear.toString());
- return false;
- }
- validateDayInMonth = new Date(year, month, 0).getDate();
- if (day < 1 || day > validateDayInMonth) {
- validDateMessage = $.mage.__('Please enter a valid day (1-%1).');
- this.dobErrorMessage = validDateMessage.replace('%1', validateDayInMonth.toString());
- return false;
- }
- today = new Date();
- dateEntered = new Date();
- dateEntered.setFullYear(year, month - 1, day);
- if (dateEntered > today) {
- this.dobErrorMessage = $.mage.__('Please enter a date from the past.');
- return false;
- }
- day = day % 10 === day ? '0' + day : day;
- month = month % 10 === month ? '0' + month : month;
- $(element).val(month + '/' + day + '/' + year);
- return true;
- },
- function () {
- return this.dobErrorMessage;
- }
- ]
- }, function (i, rule) {
- rule.unshift(i);
- $.validator.addMethod.apply($.validator, rule);
- });
- }));
|