Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 
 

171 wiersze
5.9 KiB

  1. /**
  2. * Copyright © Magento, Inc. All rights reserved.
  3. * See COPYING.txt for license details.
  4. */
  5. define([
  6. 'jquery',
  7. 'mage/validation',
  8. 'mage/translate'
  9. ], function ($) {
  10. 'use strict';
  11. $.each({
  12. 'validate-grouped-qty': [
  13. function (value, element, params) {
  14. var result = false,
  15. total = 0;
  16. $(params).find('input[data-validate*="validate-grouped-qty"]').each(function (i, e) {
  17. var val = $(e).val(),
  18. valInt;
  19. if (val && val.length > 0) {
  20. result = true;
  21. valInt = parseFloat(val) || 0;
  22. if (valInt >= 0) {
  23. total += valInt;
  24. } else {
  25. result = false;
  26. return result;
  27. }
  28. }
  29. });
  30. return result && total > 0;
  31. },
  32. $.mage.__('Please specify the quantity of product(s).')
  33. ],
  34. 'validate-one-checkbox-required-by-name': [
  35. function (value, element, params) {
  36. var checkedCount = 0,
  37. container;
  38. if (element.type === 'checkbox') {
  39. $('[name="' + element.name + '"]').each(
  40. function () {
  41. if ($(this).is(':checked')) {
  42. checkedCount += 1;
  43. return false;
  44. }
  45. }
  46. );
  47. }
  48. container = '#' + params;
  49. if (checkedCount > 0) {
  50. $(container).removeClass('validation-failed');
  51. $(container).addClass('validation-passed');
  52. return true;
  53. }
  54. $(container).addClass('validation-failed');
  55. $(container).removeClass('validation-passed');
  56. return false;
  57. },
  58. $.mage.__('Please select one of the options.')
  59. ],
  60. 'validate-date-between': [
  61. function (value, element, params) {
  62. var minDate = new Date(params[0]),
  63. maxDate = new Date(params[1]),
  64. inputDate = new Date(element.value),
  65. message;
  66. minDate.setHours(0);
  67. maxDate.setHours(0);
  68. if (inputDate >= minDate && inputDate <= maxDate) {
  69. return true;
  70. }
  71. message = $.mage.__('Please enter a date between %min and %max.');
  72. this.dateBetweenErrorMessage = message.replace('%min', minDate).replace('%max', maxDate);
  73. return false;
  74. },
  75. function () {
  76. return this.dateBetweenErrorMessage;
  77. }
  78. ],
  79. 'validate-dob': [
  80. function (val, element, params) {
  81. var dob = $(element).parents('.customer-dob'),
  82. dayVal, monthVal, yearVal, dobLength, day, month, year, curYear,
  83. validYearMessage, validateDayInMonth, validDateMessage, today, dateEntered;
  84. $(dob).find('.' + this.settings.errorClass).removeClass(this.settings.errorClass);
  85. dayVal = $(dob).find(params[0]).find('input:text').val();
  86. monthVal = $(dob).find(params[1]).find('input:text').val();
  87. yearVal = $(dob).find(params[2]).find('input:text').val();
  88. dobLength = dayVal.length + monthVal.length + yearVal.length;
  89. if (params[3] && dobLength === 0) {
  90. this.dobErrorMessage = $.mage.__('This is a required field.');
  91. return false;
  92. }
  93. if (!params[3] && dobLength === 0) {
  94. return true;
  95. }
  96. day = parseInt(dayVal, 10) || 0;
  97. month = parseInt(monthVal, 10) || 0;
  98. year = parseInt(yearVal, 10) || 0;
  99. curYear = new Date().getFullYear();
  100. if (!day || !month || !year) {
  101. this.dobErrorMessage = $.mage.__('Please enter a valid full date.');
  102. return false;
  103. }
  104. if (month < 1 || month > 12) {
  105. this.dobErrorMessage = $.mage.__('Please enter a valid month (1-12).');
  106. return false;
  107. }
  108. if (year < 1900 || year > curYear) {
  109. validYearMessage = $.mage.__('Please enter a valid year (1900-%1).');
  110. this.dobErrorMessage = validYearMessage.replace('%1', curYear.toString());
  111. return false;
  112. }
  113. validateDayInMonth = new Date(year, month, 0).getDate();
  114. if (day < 1 || day > validateDayInMonth) {
  115. validDateMessage = $.mage.__('Please enter a valid day (1-%1).');
  116. this.dobErrorMessage = validDateMessage.replace('%1', validateDayInMonth.toString());
  117. return false;
  118. }
  119. today = new Date();
  120. dateEntered = new Date();
  121. dateEntered.setFullYear(year, month - 1, day);
  122. if (dateEntered > today) {
  123. this.dobErrorMessage = $.mage.__('Please enter a date from the past.');
  124. return false;
  125. }
  126. day = day % 10 === day ? '0' + day : day;
  127. month = month % 10 === month ? '0' + month : month;
  128. $(element).val(month + '/' + day + '/' + year);
  129. return true;
  130. },
  131. function () {
  132. return this.dobErrorMessage;
  133. }
  134. ]
  135. }, function (i, rule) {
  136. rule.unshift(i);
  137. $.validator.addMethod.apply($.validator, rule);
  138. });
  139. });