inputmask.extensions.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. /*
  2. Input Mask plugin extensions
  3. http://github.com/RobinHerbots/jquery.inputmask
  4. Copyright (c) 2010 - Robin Herbots
  5. Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
  6. Version: 0.0.0-dev
  7. Optional extensions on the jquery.inputmask base
  8. */
  9. (function(factory) {
  10. if (typeof define === "function" && define.amd) {
  11. define(["inputmask.dependencyLib", "inputmask"], factory);
  12. } else if (typeof exports === "object") {
  13. module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask"));
  14. } else {
  15. factory(window.dependencyLib || jQuery, window.Inputmask);
  16. }
  17. }
  18. (function($, Inputmask) {
  19. //extra definitions
  20. Inputmask.extendDefinitions({
  21. "A": {
  22. validator: "[A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
  23. cardinality: 1,
  24. casing: "upper" //auto uppercasing
  25. },
  26. "&": { //alfanumeric uppercasing
  27. validator: "[0-9A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
  28. cardinality: 1,
  29. casing: "upper"
  30. },
  31. "#": { //hexadecimal
  32. validator: "[0-9A-Fa-f]",
  33. cardinality: 1,
  34. casing: "upper"
  35. }
  36. });
  37. Inputmask.extendAliases({
  38. "url": {
  39. mask: "ir",
  40. placeholder: "",
  41. separator: "",
  42. defaultPrefix: "http://",
  43. regex: {
  44. urlpre1: new RegExp("[fh]"),
  45. urlpre2: new RegExp("(ft|ht)"),
  46. urlpre3: new RegExp("(ftp|htt)"),
  47. urlpre4: new RegExp("(ftp:|http|ftps)"),
  48. urlpre5: new RegExp("(ftp:/|ftps:|http:|https)"),
  49. urlpre6: new RegExp("(ftp://|ftps:/|http:/|https:)"),
  50. urlpre7: new RegExp("(ftp://|ftps://|http://|https:/)"),
  51. urlpre8: new RegExp("(ftp://|ftps://|http://|https://)")
  52. },
  53. definitions: {
  54. "i": {
  55. validator: function(chrs, maskset, pos, strict, opts) {
  56. return true;
  57. },
  58. cardinality: 8,
  59. prevalidator: (function() {
  60. var result = [],
  61. prefixLimit = 8;
  62. for (var i = 0; i < prefixLimit; i++) {
  63. result[i] = (function() {
  64. var j = i;
  65. return {
  66. validator: function(chrs, maskset, pos, strict, opts) {
  67. if (opts.regex["urlpre" + (j + 1)]) {
  68. var tmp = chrs,
  69. k;
  70. if (((j + 1) - chrs.length) > 0) {
  71. tmp = maskset.buffer.join("").substring(0, ((j + 1) - chrs.length)) + "" + tmp;
  72. }
  73. var isValid = opts.regex["urlpre" + (j + 1)].test(tmp);
  74. if (!strict && !isValid) {
  75. pos = pos - j;
  76. for (k = 0; k < opts.defaultPrefix.length; k++) {
  77. maskset.buffer[pos] = opts.defaultPrefix[k];
  78. pos++;
  79. }
  80. for (k = 0; k < tmp.length - 1; k++) {
  81. maskset.buffer[pos] = tmp[k];
  82. pos++;
  83. }
  84. return {
  85. "pos": pos
  86. };
  87. }
  88. return isValid;
  89. } else {
  90. return false;
  91. }
  92. },
  93. cardinality: j
  94. };
  95. })();
  96. }
  97. return result;
  98. })()
  99. },
  100. "r": {
  101. validator: ".",
  102. cardinality: 50
  103. }
  104. },
  105. insertMode: false,
  106. autoUnmask: false
  107. },
  108. "ip": { //ip-address mask
  109. mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]",
  110. definitions: {
  111. "i": {
  112. validator: function(chrs, maskset, pos, strict, opts) {
  113. if (pos - 1 > -1 && maskset.buffer[pos - 1] !== ".") {
  114. chrs = maskset.buffer[pos - 1] + chrs;
  115. if (pos - 2 > -1 && maskset.buffer[pos - 2] !== ".") {
  116. chrs = maskset.buffer[pos - 2] + chrs;
  117. } else chrs = "0" + chrs;
  118. } else chrs = "00" + chrs;
  119. return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs);
  120. },
  121. cardinality: 1
  122. }
  123. },
  124. onUnMask: function(maskedValue, unmaskedValue, opts) {
  125. return maskedValue;
  126. }
  127. },
  128. "email": {
  129. mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,64}]@*{1,64}[.*{2,64}][.*{2,6}][.*{1,2}]",
  130. greedy: false,
  131. onBeforePaste: function(pastedValue, opts) {
  132. pastedValue = pastedValue.toLowerCase();
  133. return pastedValue.replace("mailto:", "");
  134. },
  135. definitions: {
  136. "*": {
  137. validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~\-]",
  138. cardinality: 1,
  139. casing: "lower"
  140. }
  141. },
  142. onUnMask: function(maskedValue, unmaskedValue, opts) {
  143. return maskedValue;
  144. }
  145. },
  146. "mac": {
  147. mask: "##:##:##:##:##:##"
  148. }
  149. });
  150. return Inputmask;
  151. }));