Advertisement
Guest User

Untitled

a guest
Jun 21st, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.27 KB | None | 0 0
  1. var masking = {
  2.  
  3. // User defined Values
  4. //maskedInputs : document.getElementsByClassName('masked'), // add with IE 8's death
  5. maskedInputs : document.querySelectorAll('.masked'), // kill with IE 8's death
  6. maskedNumber : 'XdDmMyY9',
  7. maskedLetter : '_',
  8.  
  9. init: function () {
  10. masking.setUpMasks(masking.maskedInputs);
  11. masking.maskedInputs = document.querySelectorAll('.masked'); // Repopulating. Needed b/c static node list was created above.
  12. masking.activateMasking(masking.maskedInputs);
  13. },
  14.  
  15. setUpMasks: function (inputs) {
  16. var i, l = inputs.length;
  17.  
  18. for(i = 0; i < l; i++) {
  19. masking.createShell(inputs[i]);
  20. }
  21. },
  22.  
  23. // replaces each masked input with a shall containing the input and it's mask.
  24. createShell : function (input) {
  25. var text = '',
  26. placeholder = input.getAttribute('placeholder');
  27.  
  28. input.setAttribute('maxlength', placeholder.length);
  29. input.setAttribute('data-placeholder', placeholder);
  30. input.removeAttribute('placeholder');
  31.  
  32. text = '<span class="shell">' +
  33. '<span aria-hidden="true" id="' + input.id +
  34. 'Mask"><i></i>' + placeholder + '</span>' +
  35. input.outerHTML +
  36. '</span>';
  37.  
  38. input.outerHTML = text;
  39. },
  40.  
  41. setValueOfMask : function (e) {
  42. var value = e.target.value,
  43. placeholder = e.target.getAttribute('data-placeholder');
  44.  
  45. return "<i>" + value + "</i>" + placeholder.substr(value.length);
  46. },
  47.  
  48. // add event listeners
  49. activateMasking : function (inputs) {
  50. var i, l;
  51.  
  52. for (i = 0, l = inputs.length; i < l; i++) {
  53. if (masking.maskedInputs[i].addEventListener) { // remove "if" after death of IE 8
  54. masking.maskedInputs[i].addEventListener('keyup', function(e) {
  55. masking.handleValueChange(e);
  56. }, false);
  57. } else if (masking.maskedInputs[i].attachEvent) { // For IE 8
  58. masking.maskedInputs[i].attachEvent("onkeyup", function(e) {
  59. e.target = e.srcElement;
  60. masking.handleValueChange(e);
  61. });
  62. }
  63. }
  64. },
  65.  
  66. handleValueChange : function (e) {
  67. var id = e.target.getAttribute('id');
  68.  
  69. switch (e.keyCode) { // allows navigating thru input
  70. case 20: // caplocks
  71. case 17: // control
  72. case 18: // option
  73. case 16: // shift
  74. case 37: // arrow keys
  75. case 38:
  76. case 39:
  77. case 40:
  78. case 9: // tab (let blur handle tab)
  79. return;
  80. }
  81.  
  82. document.getElementById(id).value = masking.handleCurrentValue(e);
  83. document.getElementById(id + 'Mask').innerHTML = masking.setValueOfMask(e);
  84.  
  85. },
  86.  
  87. handleCurrentValue : function (e) {
  88. var isCharsetPresent = e.target.getAttribute('data-charset'),
  89. placeholder = isCharsetPresent || e.target.getAttribute('data-placeholder'),
  90. value = e.target.value, l = placeholder.length, newValue = '',
  91. i, j, isInt, isLetter, strippedValue;
  92.  
  93. // strip special characters
  94. strippedValue = isCharsetPresent ? value.replace(/\W/g, "") : value.replace(/\D/g, "");
  95.  
  96. for (i = 0, j = 0; i < l; i++) {
  97. var x =
  98. isInt = !isNaN(parseInt(strippedValue[j]));
  99. isLetter = strippedValue[j] ? strippedValue[j].match(/[A-Z]/i) : false;
  100. matchesNumber = masking.maskedNumber.indexOf(placeholder[i]) >= 0;
  101. matchesLetter = masking.maskedLetter.indexOf(placeholder[i]) >= 0;
  102.  
  103. if ((matchesNumber && isInt) || (isCharsetPresent && matchesLetter && isLetter)) {
  104.  
  105. newValue += strippedValue[j++];
  106.  
  107. } else if ((!isCharsetPresent && !isInt && matchesNumber) || (isCharsetPresent && ((matchesLetter && !isLetter) || (matchesNumber && !isInt)))) {
  108. // masking.errorOnKeyEntry(); // write your own error handling function
  109. return newValue;
  110.  
  111. } else {
  112. newValue += placeholder[i];
  113. }
  114. // break if no characters left and the pattern is non-special character
  115. if (strippedValue[j] == undefined) {
  116. break;
  117. }
  118. }
  119. if (e.target.getAttribute('data-valid-example')) {
  120. return masking.validateProgress(e, newValue);
  121. }
  122. return newValue;
  123. },
  124.  
  125. validateProgress : function (e, value) {
  126. var validExample = e.target.getAttribute('data-valid-example'),
  127. pattern = new RegExp(e.target.getAttribute('pattern')),
  128. placeholder = e.target.getAttribute('data-placeholder'),
  129. l = value.length, testValue = '';
  130.  
  131. //convert to months
  132. if (l == 1 && placeholder.toUpperCase().substr(0,2) == 'MM') {
  133. if(value > 1 && value < 10) {
  134. value = '0' + value;
  135. }
  136. return value;
  137. }
  138. // test the value, removing the last character, until what you have is a submatch
  139. for ( i = l; i >= 0; i--) {
  140. testValue = value + validExample.substr(value.length);
  141. if (pattern.test(testValue)) {
  142. return value;
  143. } else {
  144. value = value.substr(0, value.length-1);
  145. }
  146. }
  147.  
  148. return value;
  149. },
  150.  
  151. errorOnKeyEntry : function () {
  152. // Write your own error handling
  153. }
  154. }
  155.  
  156. masking.init();
  157.  
  158. const masked = Array.from(document.getElementsByClassName("masked"));
  159. const total = document.getElementById("total");
  160. const totalDefault = Number(total.value);
  161. let totalCheckboxes = (value) => totalDefault + value;
  162.  
  163. const custo = document.getElementById("custamount");
  164.  
  165. masked.forEach((input) => {
  166. input.addEventListener("input", (e) => {
  167.  
  168.  
  169. if (current[0])
  170. {
  171. total.value = masked.reduce((acc, { value }) => acc + Number(value), totalCheckboxes(current[0])) + ".00";
  172. } else { total.value = masked.reduce((acc, { value }) => acc + Number(value), totalCheckboxes(0)) + ".00"; }
  173. custo.innerHTML = "$" + masked.reduce((acc, { value }) => acc + Number(value), 0) + ".00";
  174.  
  175. });
  176. })
  177.  
  178.  
  179.  
  180.  
  181. function validate(evt) {
  182. var theEvent = evt || window.event;
  183.  
  184. // Handle paste
  185. if (theEvent.type === 'paste') {
  186. key = event.clipboardData.getData('text/plain');
  187. } else {
  188. // Handle key press
  189. var key = theEvent.keyCode || theEvent.which;
  190. key = String.fromCharCode(key);
  191. }
  192. var regex = /[0-9]/;
  193. if( !regex.test(key) ) {
  194. theEvent.returnValue = false;
  195. if(theEvent.preventDefault) theEvent.preventDefault();
  196. }
  197. }
  198.  
  199.  
  200. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement