Browse Source

#595 fix prefix suffix autoescape

Robin Herbots 11 years ago
parent
commit
ee84a3beb9

+ 6 - 2
dist/inputmask/jquery.inputmask.numeric.extensions.js

@@ -11,6 +11,10 @@
     return $.extend($.inputmask.defaults.aliases, {
     return $.extend($.inputmask.defaults.aliases, {
         numeric: {
         numeric: {
             mask: function(opts) {
             mask: function(opts) {
+                function autoEscape(txt) {
+                    for (var escapedTxt = "", i = 0; i < txt.length; i++) escapedTxt += opts.definitions[txt[i]] ? "\\" + txt[i] : txt[i];
+                    return escapedTxt;
+                }
                 if (0 !== opts.repeat && isNaN(opts.integerDigits) && (opts.integerDigits = opts.repeat), 
                 if (0 !== opts.repeat && isNaN(opts.integerDigits) && (opts.integerDigits = opts.repeat), 
                 opts.repeat = 0, opts.groupSeparator == opts.radixPoint && (opts.groupSeparator = "." == opts.radixPoint ? "," : "," == opts.radixPoint ? "." : ""), 
                 opts.repeat = 0, opts.groupSeparator == opts.radixPoint && (opts.groupSeparator = "." == opts.radixPoint ? "," : "," == opts.radixPoint ? "." : ""), 
                 " " === opts.groupSeparator && (opts.skipOptionalPartCharacter = void 0), opts.autoGroup = opts.autoGroup && "" != opts.groupSeparator, 
                 " " === opts.groupSeparator && (opts.skipOptionalPartCharacter = void 0), opts.autoGroup = opts.autoGroup && "" != opts.groupSeparator, 
@@ -20,9 +24,9 @@
                     opts.integerDigits = parseInt(opts.integerDigits) + (0 == mod ? seps - 1 : seps);
                     opts.integerDigits = parseInt(opts.integerDigits) + (0 == mod ? seps - 1 : seps);
                 }
                 }
                 opts.definitions[";"] = opts.definitions["~"];
                 opts.definitions[";"] = opts.definitions["~"];
-                var mask = opts.prefix;
+                var mask = autoEscape(opts.prefix);
                 return mask += "[+]", mask += "~{1," + opts.integerDigits + "}", void 0 != opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (mask += opts.digitsOptional ? "[" + (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}]" : (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}"), 
                 return mask += "[+]", mask += "~{1," + opts.integerDigits + "}", void 0 != opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (mask += opts.digitsOptional ? "[" + (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}]" : (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}"), 
-                mask += opts.suffix;
+                mask += autoEscape(opts.suffix);
             },
             },
             placeholder: "",
             placeholder: "",
             greedy: !1,
             greedy: !1,

+ 6 - 2
dist/jquery.inputmask.bundle.js

@@ -1772,6 +1772,10 @@
     return $.extend($.inputmask.defaults.aliases, {
     return $.extend($.inputmask.defaults.aliases, {
         numeric: {
         numeric: {
             mask: function(opts) {
             mask: function(opts) {
+                function autoEscape(txt) {
+                    for (var escapedTxt = "", i = 0; i < txt.length; i++) escapedTxt += opts.definitions[txt[i]] ? "\\" + txt[i] : txt[i];
+                    return escapedTxt;
+                }
                 if (0 !== opts.repeat && isNaN(opts.integerDigits) && (opts.integerDigits = opts.repeat), 
                 if (0 !== opts.repeat && isNaN(opts.integerDigits) && (opts.integerDigits = opts.repeat), 
                 opts.repeat = 0, opts.groupSeparator == opts.radixPoint && (opts.groupSeparator = "." == opts.radixPoint ? "," : "," == opts.radixPoint ? "." : ""), 
                 opts.repeat = 0, opts.groupSeparator == opts.radixPoint && (opts.groupSeparator = "." == opts.radixPoint ? "," : "," == opts.radixPoint ? "." : ""), 
                 " " === opts.groupSeparator && (opts.skipOptionalPartCharacter = void 0), opts.autoGroup = opts.autoGroup && "" != opts.groupSeparator, 
                 " " === opts.groupSeparator && (opts.skipOptionalPartCharacter = void 0), opts.autoGroup = opts.autoGroup && "" != opts.groupSeparator, 
@@ -1781,9 +1785,9 @@
                     opts.integerDigits = parseInt(opts.integerDigits) + (0 == mod ? seps - 1 : seps);
                     opts.integerDigits = parseInt(opts.integerDigits) + (0 == mod ? seps - 1 : seps);
                 }
                 }
                 opts.definitions[";"] = opts.definitions["~"];
                 opts.definitions[";"] = opts.definitions["~"];
-                var mask = opts.prefix;
+                var mask = autoEscape(opts.prefix);
                 return mask += "[+]", mask += "~{1," + opts.integerDigits + "}", void 0 != opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (mask += opts.digitsOptional ? "[" + (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}]" : (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}"), 
                 return mask += "[+]", mask += "~{1," + opts.integerDigits + "}", void 0 != opts.digits && (isNaN(opts.digits) || parseInt(opts.digits) > 0) && (mask += opts.digitsOptional ? "[" + (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}]" : (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}"), 
-                mask += opts.suffix;
+                mask += autoEscape(opts.suffix);
             },
             },
             placeholder: "",
             placeholder: "",
             greedy: !1,
             greedy: !1,

File diff suppressed because it is too large
+ 2 - 2
dist/jquery.inputmask.bundle.min.js


+ 9 - 2
js/jquery.inputmask.numeric.extensions.js

@@ -12,6 +12,13 @@ Optional extensions on the jquery.inputmask base
     $.extend($.inputmask.defaults.aliases, {
     $.extend($.inputmask.defaults.aliases, {
         'numeric': {
         'numeric': {
             mask: function (opts) {
             mask: function (opts) {
+                function autoEscape(txt) {
+                    var escapedTxt = "";
+                    for (var i = 0; i < txt.length; i++) {
+                        escapedTxt += opts.definitions[txt[i]] ? "\\" + txt[i] : txt[i];
+                    }
+                    return escapedTxt;
+                }
                 if (opts.repeat !== 0 && isNaN(opts.integerDigits)) {
                 if (opts.repeat !== 0 && isNaN(opts.integerDigits)) {
                     opts.integerDigits = opts.repeat;
                     opts.integerDigits = opts.repeat;
                 }
                 }
@@ -38,7 +45,7 @@ Optional extensions on the jquery.inputmask base
 
 
                 opts.definitions[";"] = opts.definitions["~"]; //clone integer def for decimals
                 opts.definitions[";"] = opts.definitions["~"]; //clone integer def for decimals
 
 
-                var mask = opts.prefix;
+                var mask = autoEscape(opts.prefix);
                 mask += "[+]";
                 mask += "[+]";
                 mask += "~{1," + opts.integerDigits + "}";
                 mask += "~{1," + opts.integerDigits + "}";
                 if (opts.digits != undefined && (isNaN(opts.digits) || parseInt(opts.digits) > 0)) {
                 if (opts.digits != undefined && (isNaN(opts.digits) || parseInt(opts.digits) > 0)) {
@@ -46,7 +53,7 @@ Optional extensions on the jquery.inputmask base
                         mask += "[" + (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}]";
                         mask += "[" + (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}]";
                     else mask += (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}";
                     else mask += (opts.decimalProtect ? ":" : opts.radixPoint) + ";{" + opts.digits + "}";
                 }
                 }
-                mask += opts.suffix;
+                mask += autoEscape(opts.suffix);
                 return mask;
                 return mask;
             },
             },
             placeholder: "",
             placeholder: "",