inputmask.extensions.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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. definitions: {
  40. "i": {
  41. validator: ".",
  42. cardinality: 1
  43. }
  44. },
  45. mask: "(\\http://)|(\\http\\s://)|(ftp://)|(ftp\\s://)i{+}",
  46. insertMode: false,
  47. autoUnmask: false
  48. },
  49. "ip": { //ip-address mask
  50. mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]",
  51. definitions: {
  52. "i": {
  53. validator: function(chrs, maskset, pos, strict, opts) {
  54. if (pos - 1 > -1 && maskset.buffer[pos - 1] !== ".") {
  55. chrs = maskset.buffer[pos - 1] + chrs;
  56. if (pos - 2 > -1 && maskset.buffer[pos - 2] !== ".") {
  57. chrs = maskset.buffer[pos - 2] + chrs;
  58. } else chrs = "0" + chrs;
  59. } else chrs = "00" + chrs;
  60. return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs);
  61. },
  62. cardinality: 1
  63. }
  64. },
  65. onUnMask: function(maskedValue, unmaskedValue, opts) {
  66. return maskedValue;
  67. }
  68. },
  69. "email": {
  70. //https://en.wikipedia.org/wiki/Domain_name#Domain_name_space
  71. //https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names
  72. //should be extended with the toplevel domains at the end
  73. mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}[.-{1,63}][.-{1,63}][.-{1,63}]",
  74. greedy: false,
  75. onBeforePaste: function(pastedValue, opts) {
  76. pastedValue = pastedValue.toLowerCase();
  77. return pastedValue.replace("mailto:", "");
  78. },
  79. definitions: {
  80. "*": {
  81. validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~\-]",
  82. cardinality: 1,
  83. casing: "lower"
  84. },
  85. "-": {
  86. validator: "[0-9A-Za-z\-]",
  87. cardinality: 1,
  88. casing: "lower"
  89. }
  90. },
  91. onUnMask: function(maskedValue, unmaskedValue, opts) {
  92. return maskedValue;
  93. }
  94. },
  95. "mac": {
  96. mask: "##:##:##:##:##:##"
  97. },
  98. "vin": {
  99. //https://en.wikipedia.org/wiki/Vehicle_identification_number
  100. // see issue #1199
  101. mask: "V{8}vV{4}9{4}",
  102. definitions: {
  103. 'V': {
  104. validator: "[A-HJ-NPR-Za-hj-npr-z\\d]",
  105. cardinality: 1,
  106. casing: "upper"
  107. },
  108. 'v': {
  109. validator: "[Xx\\d]",
  110. cardinality: 1,
  111. casing: "upper"
  112. }
  113. },
  114. clearIncomplete: true,
  115. autoUnmask: true
  116. }
  117. });
  118. return Inputmask;
  119. }));