|
|
@@ -17,130 +17,136 @@ Optional extensions on the jquery.inputmask base
|
|
|
}
|
|
|
}
|
|
|
(function($, Inputmask) {
|
|
|
- //extra definitions
|
|
|
- Inputmask.extendDefinitions({
|
|
|
- "A": {
|
|
|
- validator: "[A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
|
|
|
- cardinality: 1,
|
|
|
- casing: "upper" //auto uppercasing
|
|
|
- },
|
|
|
- "&": { //alfanumeric uppercasing
|
|
|
- validator: "[0-9A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
|
|
|
- cardinality: 1,
|
|
|
- casing: "upper"
|
|
|
- },
|
|
|
- "#": { //hexadecimal
|
|
|
- validator: "[0-9A-Fa-f]",
|
|
|
- cardinality: 1,
|
|
|
- casing: "upper"
|
|
|
- }
|
|
|
- });
|
|
|
- Inputmask.extendAliases({
|
|
|
- "url": {
|
|
|
- mask: "ir",
|
|
|
- placeholder: "",
|
|
|
- separator: "",
|
|
|
- defaultPrefix: "http://",
|
|
|
- regex: {
|
|
|
- urlpre1: new RegExp("[fh]"),
|
|
|
- urlpre2: new RegExp("(ft|ht)"),
|
|
|
- urlpre3: new RegExp("(ftp|htt)"),
|
|
|
- urlpre4: new RegExp("(ftp:|http|ftps)"),
|
|
|
- urlpre5: new RegExp("(ftp:/|ftps:|http:|https)"),
|
|
|
- urlpre6: new RegExp("(ftp://|ftps:/|http:/|https:)"),
|
|
|
- urlpre7: new RegExp("(ftp://|ftps://|http://|https:/)"),
|
|
|
- urlpre8: new RegExp("(ftp://|ftps://|http://|https://)")
|
|
|
+ //extra definitions
|
|
|
+ Inputmask.extendDefinitions({
|
|
|
+ "A": {
|
|
|
+ validator: "[A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
|
|
|
+ cardinality: 1,
|
|
|
+ casing: "upper" //auto uppercasing
|
|
|
},
|
|
|
- definitions: {
|
|
|
- "i": {
|
|
|
- validator: function(chrs, maskset, pos, strict, opts) {
|
|
|
- return true;
|
|
|
- },
|
|
|
- cardinality: 8,
|
|
|
- prevalidator: (function() {
|
|
|
- var result = [],
|
|
|
- prefixLimit = 8;
|
|
|
- for (var i = 0; i < prefixLimit; i++) {
|
|
|
- result[i] = (function() {
|
|
|
- var j = i;
|
|
|
- return {
|
|
|
- validator: function(chrs, maskset, pos, strict, opts) {
|
|
|
- if (opts.regex["urlpre" + (j + 1)]) {
|
|
|
- var tmp = chrs,
|
|
|
- k;
|
|
|
- if (((j + 1) - chrs.length) > 0) {
|
|
|
- tmp = maskset.buffer.join('').substring(0, ((j + 1) - chrs.length)) + "" + tmp;
|
|
|
- }
|
|
|
- var isValid = opts.regex["urlpre" + (j + 1)].test(tmp);
|
|
|
- if (!strict && !isValid) {
|
|
|
- pos = pos - j;
|
|
|
- for (k = 0; k < opts.defaultPrefix.length; k++) {
|
|
|
- maskset.buffer[pos] = opts.defaultPrefix[k];
|
|
|
- pos++;
|
|
|
+ "&": { //alfanumeric uppercasing
|
|
|
+ validator: "[0-9A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
|
|
|
+ cardinality: 1,
|
|
|
+ casing: "upper"
|
|
|
+ },
|
|
|
+ "#": { //hexadecimal
|
|
|
+ validator: "[0-9A-Fa-f]",
|
|
|
+ cardinality: 1,
|
|
|
+ casing: "upper"
|
|
|
+ }
|
|
|
+ });
|
|
|
+ Inputmask.extendAliases({
|
|
|
+ "url": {
|
|
|
+ mask: "ir",
|
|
|
+ placeholder: "",
|
|
|
+ separator: "",
|
|
|
+ defaultPrefix: "http://",
|
|
|
+ regex: {
|
|
|
+ urlpre1: new RegExp("[fh]"),
|
|
|
+ urlpre2: new RegExp("(ft|ht)"),
|
|
|
+ urlpre3: new RegExp("(ftp|htt)"),
|
|
|
+ urlpre4: new RegExp("(ftp:|http|ftps)"),
|
|
|
+ urlpre5: new RegExp("(ftp:/|ftps:|http:|https)"),
|
|
|
+ urlpre6: new RegExp("(ftp://|ftps:/|http:/|https:)"),
|
|
|
+ urlpre7: new RegExp("(ftp://|ftps://|http://|https:/)"),
|
|
|
+ urlpre8: new RegExp("(ftp://|ftps://|http://|https://)")
|
|
|
+ },
|
|
|
+ definitions: {
|
|
|
+ "i": {
|
|
|
+ validator: function(chrs, maskset, pos, strict, opts) {
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ cardinality: 8,
|
|
|
+ prevalidator: (function() {
|
|
|
+ var result = [],
|
|
|
+ prefixLimit = 8;
|
|
|
+ for (var i = 0; i < prefixLimit; i++) {
|
|
|
+ result[i] = (function() {
|
|
|
+ var j = i;
|
|
|
+ return {
|
|
|
+ validator: function(chrs, maskset, pos, strict, opts) {
|
|
|
+ if (opts.regex["urlpre" + (j + 1)]) {
|
|
|
+ var tmp = chrs,
|
|
|
+ k;
|
|
|
+ if (((j + 1) - chrs.length) > 0) {
|
|
|
+ tmp = maskset.buffer.join('').substring(0, ((j + 1) - chrs.length)) + "" + tmp;
|
|
|
}
|
|
|
- for (k = 0; k < tmp.length - 1; k++) {
|
|
|
- maskset.buffer[pos] = tmp[k];
|
|
|
- pos++;
|
|
|
+ var isValid = opts.regex["urlpre" + (j + 1)].test(tmp);
|
|
|
+ if (!strict && !isValid) {
|
|
|
+ pos = pos - j;
|
|
|
+ for (k = 0; k < opts.defaultPrefix.length; k++) {
|
|
|
+ maskset.buffer[pos] = opts.defaultPrefix[k];
|
|
|
+ pos++;
|
|
|
+ }
|
|
|
+ for (k = 0; k < tmp.length - 1; k++) {
|
|
|
+ maskset.buffer[pos] = tmp[k];
|
|
|
+ pos++;
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ "pos": pos
|
|
|
+ };
|
|
|
}
|
|
|
- return {
|
|
|
- "pos": pos
|
|
|
- };
|
|
|
+ return isValid;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
}
|
|
|
- return isValid;
|
|
|
- } else {
|
|
|
- return false;
|
|
|
- }
|
|
|
- },
|
|
|
- cardinality: j
|
|
|
- };
|
|
|
- })();
|
|
|
- }
|
|
|
- return result;
|
|
|
- })()
|
|
|
+ },
|
|
|
+ cardinality: j
|
|
|
+ };
|
|
|
+ })();
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ })()
|
|
|
+ },
|
|
|
+ "r": {
|
|
|
+ validator: ".",
|
|
|
+ cardinality: 50
|
|
|
+ }
|
|
|
},
|
|
|
- "r": {
|
|
|
- validator: ".",
|
|
|
- cardinality: 50
|
|
|
- }
|
|
|
+ insertMode: false,
|
|
|
+ autoUnmask: false
|
|
|
},
|
|
|
- insertMode: false,
|
|
|
- autoUnmask: false
|
|
|
- },
|
|
|
- "ip": { //ip-address mask
|
|
|
- mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]",
|
|
|
- definitions: {
|
|
|
- "i": {
|
|
|
- validator: function(chrs, maskset, pos, strict, opts) {
|
|
|
- if (pos - 1 > -1 && maskset.buffer[pos - 1] !== ".") {
|
|
|
- chrs = maskset.buffer[pos - 1] + chrs;
|
|
|
- if (pos - 2 > -1 && maskset.buffer[pos - 2] !== ".") {
|
|
|
- chrs = maskset.buffer[pos - 2] + chrs;
|
|
|
- } else chrs = "0" + chrs;
|
|
|
- } else chrs = "00" + chrs;
|
|
|
- return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs);
|
|
|
- },
|
|
|
- cardinality: 1
|
|
|
+ "ip": { //ip-address mask
|
|
|
+ mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]",
|
|
|
+ definitions: {
|
|
|
+ "i": {
|
|
|
+ validator: function(chrs, maskset, pos, strict, opts) {
|
|
|
+ if (pos - 1 > -1 && maskset.buffer[pos - 1] !== ".") {
|
|
|
+ chrs = maskset.buffer[pos - 1] + chrs;
|
|
|
+ if (pos - 2 > -1 && maskset.buffer[pos - 2] !== ".") {
|
|
|
+ chrs = maskset.buffer[pos - 2] + chrs;
|
|
|
+ } else chrs = "0" + chrs;
|
|
|
+ } else chrs = "00" + chrs;
|
|
|
+ return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs);
|
|
|
+ },
|
|
|
+ cardinality: 1
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onUnMask: function(maskedValue, unmaskedValue, opts) {
|
|
|
+ return maskedValue;
|
|
|
}
|
|
|
- }
|
|
|
- },
|
|
|
- "email": {
|
|
|
- mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,64}]@*{1,64}[.*{2,64}][.*{2,6}][.*{1,2}]",
|
|
|
- greedy: false,
|
|
|
- onBeforePaste: function(pastedValue, opts) {
|
|
|
- pastedValue = pastedValue.toLowerCase();
|
|
|
- return pastedValue.replace("mailto:", "");
|
|
|
},
|
|
|
- definitions: {
|
|
|
- "*": {
|
|
|
- validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~\-]",
|
|
|
- cardinality: 1,
|
|
|
- casing: "lower"
|
|
|
+ "email": {
|
|
|
+ mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,64}]@*{1,64}[.*{2,64}][.*{2,6}][.*{1,2}]",
|
|
|
+ greedy: false,
|
|
|
+ onBeforePaste: function(pastedValue, opts) {
|
|
|
+ pastedValue = pastedValue.toLowerCase();
|
|
|
+ return pastedValue.replace("mailto:", "");
|
|
|
+ },
|
|
|
+ definitions: {
|
|
|
+ "*": {
|
|
|
+ validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~\-]",
|
|
|
+ cardinality: 1,
|
|
|
+ casing: "lower"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onUnMask: function(maskedValue, unmaskedValue, opts) {
|
|
|
+ return maskedValue;
|
|
|
}
|
|
|
+ },
|
|
|
+ "mac": {
|
|
|
+ mask: "##:##:##:##:##:##"
|
|
|
}
|
|
|
- },
|
|
|
- "mac": {
|
|
|
- mask: "##:##:##:##:##:##"
|
|
|
- }
|
|
|
- });
|
|
|
- return Inputmask;
|
|
|
-}));
|
|
|
+ });
|
|
|
+ return Inputmask;
|
|
|
+ }));
|