jquery.inputmask.extensions.js 5.6 KB

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