jquery.inputmask.extensions.js 5.4 KB

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