inputmask.extensions.js 4.3 KB

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