浏览代码

better handle reversing

Robin Herbots 11 年之前
父节点
当前提交
c517a833e1
共有 4 个文件被更改,包括 51 次插入41 次删除
  1. 12 9
      dist/inputmask/jquery.inputmask.js
  2. 12 9
      dist/jquery.inputmask.bundle.js
  3. 1 1
      dist/jquery.inputmask.bundle.min.js
  4. 26 22
      js/jquery.inputmask.js

+ 12 - 9
dist/inputmask/jquery.inputmask.js

@@ -156,11 +156,6 @@
             maskTokens;
             maskTokens;
         }
         }
         function generateMask(mask, metadata) {
         function generateMask(mask, metadata) {
-            if (opts.numericInput && opts.multi !== !0) {
-                mask = mask.split("").reverse();
-                for (var ndx = 0; ndx < mask.length; ndx++) mask[ndx] == opts.optionalmarker.start ? mask[ndx] = opts.optionalmarker.end : mask[ndx] == opts.optionalmarker.end ? mask[ndx] = opts.optionalmarker.start : mask[ndx] == opts.groupmarker.start ? mask[ndx] = opts.groupmarker.end : mask[ndx] == opts.groupmarker.end && (mask[ndx] = opts.groupmarker.start);
-                mask = mask.join("");
-            }
             if (void 0 == mask || "" == mask) return void 0;
             if (void 0 == mask || "" == mask) return void 0;
             if (1 == mask.length && 0 == opts.greedy && 0 != opts.repeat && (opts.placeholder = ""), 
             if (1 == mask.length && 0 == opts.greedy && 0 != opts.repeat && (opts.placeholder = ""), 
             opts.repeat > 0 || "*" == opts.repeat || "+" == opts.repeat) {
             opts.repeat > 0 || "*" == opts.repeat || "+" == opts.repeat) {
@@ -177,17 +172,25 @@
                 metadata: metadata
                 metadata: metadata
             }), $.extend(!0, {}, $.inputmask.masksCache[mask]);
             }), $.extend(!0, {}, $.inputmask.masksCache[mask]);
         }
         }
+        function preProcessMask(mask) {
+            if (mask = mask.toString(), opts.numericInput) {
+                mask = mask.split("").reverse();
+                for (var ndx = 0; ndx < mask.length; ndx++) mask[ndx] == opts.optionalmarker.start ? mask[ndx] = opts.optionalmarker.end : mask[ndx] == opts.optionalmarker.end ? mask[ndx] = opts.optionalmarker.start : mask[ndx] == opts.groupmarker.start ? mask[ndx] = opts.groupmarker.end : mask[ndx] == opts.groupmarker.end && (mask[ndx] = opts.groupmarker.start);
+                mask = mask.join("");
+            }
+            return mask;
+        }
         var ms = void 0;
         var ms = void 0;
         if ($.isFunction(opts.mask) && (opts.mask = opts.mask.call(this, opts)), $.isArray(opts.mask)) if (multi) ms = [], 
         if ($.isFunction(opts.mask) && (opts.mask = opts.mask.call(this, opts)), $.isArray(opts.mask)) if (multi) ms = [], 
         $.each(opts.mask, function(ndx, msk) {
         $.each(opts.mask, function(ndx, msk) {
-            ms.push(void 0 == msk.mask || $.isFunction(msk.mask) ? generateMask(msk.toString(), msk) : generateMask(msk.mask.toString(), msk));
+            ms.push(void 0 == msk.mask || $.isFunction(msk.mask) ? generateMask(preProcessMask(msk), msk) : generateMask(preProcessMask(msk.mask), msk));
         }); else {
         }); else {
             opts.keepStatic = void 0 == opts.keepStatic ? !0 : opts.keepStatic;
             opts.keepStatic = void 0 == opts.keepStatic ? !0 : opts.keepStatic;
             var altMask = "(";
             var altMask = "(";
             $.each(opts.mask, function(ndx, msk) {
             $.each(opts.mask, function(ndx, msk) {
-                altMask.length > 1 && (altMask += ")|("), altMask += void 0 == msk.mask || $.isFunction(msk.mask) ? msk.toString() : msk.mask.toString();
+                altMask.length > 1 && (altMask += ")|("), altMask += preProcessMask(void 0 == msk.mask || $.isFunction(msk.mask) ? msk : msk.mask);
             }), altMask += ")", ms = generateMask(altMask, opts.mask);
             }), altMask += ")", ms = generateMask(altMask, opts.mask);
-        } else opts.mask && (ms = void 0 == opts.mask.mask || $.isFunction(opts.mask.mask) ? generateMask(opts.mask.toString(), opts.mask) : generateMask(opts.mask.mask.toString(), opts.mask));
+        } else opts.mask && (ms = void 0 == opts.mask.mask || $.isFunction(opts.mask.mask) ? generateMask(preProcessMask(opts.mask), opts.mask) : generateMask(preProcessMask(opts.mask.mask), opts.mask));
         return ms;
         return ms;
     }
     }
     function maskScope(actionObj, maskset, opts) {
     function maskScope(actionObj, maskset, opts) {
@@ -682,7 +685,7 @@
             function InstallNativeValueSetFallback(npt) {
             function InstallNativeValueSetFallback(npt) {
                 $(npt).bind("mouseenter.inputmask", function() {
                 $(npt).bind("mouseenter.inputmask", function() {
                     var $input = $(this), input = this, value = input._valueGet();
                     var $input = $(this), input = this, value = input._valueGet();
-                    "" != value && value != getBuffer().join("") && (valueSet.call(this, $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(el, value, opts) || value : value), 
+                    "" != value && value != getBuffer().join("") && (this._valueSet($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(el, value, opts) || value : value), 
                     $input.trigger("setvalue"));
                     $input.trigger("setvalue"));
                 });
                 });
                 //!! the bound handlers are executed in the order they where bound
                 //!! the bound handlers are executed in the order they where bound

+ 12 - 9
dist/jquery.inputmask.bundle.js

@@ -154,11 +154,6 @@
             maskTokens;
             maskTokens;
         }
         }
         function generateMask(mask, metadata) {
         function generateMask(mask, metadata) {
-            if (opts.numericInput && opts.multi !== !0) {
-                mask = mask.split("").reverse();
-                for (var ndx = 0; ndx < mask.length; ndx++) mask[ndx] == opts.optionalmarker.start ? mask[ndx] = opts.optionalmarker.end : mask[ndx] == opts.optionalmarker.end ? mask[ndx] = opts.optionalmarker.start : mask[ndx] == opts.groupmarker.start ? mask[ndx] = opts.groupmarker.end : mask[ndx] == opts.groupmarker.end && (mask[ndx] = opts.groupmarker.start);
-                mask = mask.join("");
-            }
             if (void 0 == mask || "" == mask) return void 0;
             if (void 0 == mask || "" == mask) return void 0;
             if (1 == mask.length && 0 == opts.greedy && 0 != opts.repeat && (opts.placeholder = ""), 
             if (1 == mask.length && 0 == opts.greedy && 0 != opts.repeat && (opts.placeholder = ""), 
             opts.repeat > 0 || "*" == opts.repeat || "+" == opts.repeat) {
             opts.repeat > 0 || "*" == opts.repeat || "+" == opts.repeat) {
@@ -175,17 +170,25 @@
                 metadata: metadata
                 metadata: metadata
             }), $.extend(!0, {}, $.inputmask.masksCache[mask]);
             }), $.extend(!0, {}, $.inputmask.masksCache[mask]);
         }
         }
+        function preProcessMask(mask) {
+            if (mask = mask.toString(), opts.numericInput) {
+                mask = mask.split("").reverse();
+                for (var ndx = 0; ndx < mask.length; ndx++) mask[ndx] == opts.optionalmarker.start ? mask[ndx] = opts.optionalmarker.end : mask[ndx] == opts.optionalmarker.end ? mask[ndx] = opts.optionalmarker.start : mask[ndx] == opts.groupmarker.start ? mask[ndx] = opts.groupmarker.end : mask[ndx] == opts.groupmarker.end && (mask[ndx] = opts.groupmarker.start);
+                mask = mask.join("");
+            }
+            return mask;
+        }
         var ms = void 0;
         var ms = void 0;
         if ($.isFunction(opts.mask) && (opts.mask = opts.mask.call(this, opts)), $.isArray(opts.mask)) if (multi) ms = [], 
         if ($.isFunction(opts.mask) && (opts.mask = opts.mask.call(this, opts)), $.isArray(opts.mask)) if (multi) ms = [], 
         $.each(opts.mask, function(ndx, msk) {
         $.each(opts.mask, function(ndx, msk) {
-            ms.push(void 0 == msk.mask || $.isFunction(msk.mask) ? generateMask(msk.toString(), msk) : generateMask(msk.mask.toString(), msk));
+            ms.push(void 0 == msk.mask || $.isFunction(msk.mask) ? generateMask(preProcessMask(msk), msk) : generateMask(preProcessMask(msk.mask), msk));
         }); else {
         }); else {
             opts.keepStatic = void 0 == opts.keepStatic ? !0 : opts.keepStatic;
             opts.keepStatic = void 0 == opts.keepStatic ? !0 : opts.keepStatic;
             var altMask = "(";
             var altMask = "(";
             $.each(opts.mask, function(ndx, msk) {
             $.each(opts.mask, function(ndx, msk) {
-                altMask.length > 1 && (altMask += ")|("), altMask += void 0 == msk.mask || $.isFunction(msk.mask) ? msk.toString() : msk.mask.toString();
+                altMask.length > 1 && (altMask += ")|("), altMask += preProcessMask(void 0 == msk.mask || $.isFunction(msk.mask) ? msk : msk.mask);
             }), altMask += ")", ms = generateMask(altMask, opts.mask);
             }), altMask += ")", ms = generateMask(altMask, opts.mask);
-        } else opts.mask && (ms = void 0 == opts.mask.mask || $.isFunction(opts.mask.mask) ? generateMask(opts.mask.toString(), opts.mask) : generateMask(opts.mask.mask.toString(), opts.mask));
+        } else opts.mask && (ms = void 0 == opts.mask.mask || $.isFunction(opts.mask.mask) ? generateMask(preProcessMask(opts.mask), opts.mask) : generateMask(preProcessMask(opts.mask.mask), opts.mask));
         return ms;
         return ms;
     }
     }
     function maskScope(actionObj, maskset, opts) {
     function maskScope(actionObj, maskset, opts) {
@@ -680,7 +683,7 @@
             function InstallNativeValueSetFallback(npt) {
             function InstallNativeValueSetFallback(npt) {
                 $(npt).bind("mouseenter.inputmask", function() {
                 $(npt).bind("mouseenter.inputmask", function() {
                     var $input = $(this), input = this, value = input._valueGet();
                     var $input = $(this), input = this, value = input._valueGet();
-                    "" != value && value != getBuffer().join("") && (valueSet.call(this, $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(el, value, opts) || value : value), 
+                    "" != value && value != getBuffer().join("") && (this._valueSet($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(el, value, opts) || value : value), 
                     $input.trigger("setvalue"));
                     $input.trigger("setvalue"));
                 });
                 });
                 //!! the bound handlers are executed in the order they where bound
                 //!! the bound handlers are executed in the order they where bound

文件差异内容过多而无法显示
+ 1 - 1
dist/jquery.inputmask.bundle.min.js


+ 26 - 22
js/jquery.inputmask.js

@@ -228,20 +228,6 @@
             }
             }
 
 
             function generateMask(mask, metadata) {
             function generateMask(mask, metadata) {
-                if (opts.numericInput && opts.multi !== true) { //TODO FIX FOR DYNAMIC MASKS WITH QUANTIFIERS
-                    mask = mask.split('').reverse();
-                    for (var ndx = 0; ndx < mask.length; ndx++) {
-                        if (mask[ndx] == opts.optionalmarker.start)
-                            mask[ndx] = opts.optionalmarker.end;
-                        else if (mask[ndx] == opts.optionalmarker.end)
-                            mask[ndx] = opts.optionalmarker.start;
-                        else if (mask[ndx] == opts.groupmarker.start)
-                            mask[ndx] = opts.groupmarker.end;
-                        else if (mask[ndx] == opts.groupmarker.end)
-                            mask[ndx] = opts.groupmarker.start;
-                    }
-                    mask = mask.join('');
-                }
                 if (mask == undefined || mask == "")
                 if (mask == undefined || mask == "")
                     return undefined;
                     return undefined;
                 else {
                 else {
@@ -267,6 +253,24 @@
                     return $.extend(true, {}, $.inputmask.masksCache[mask]);
                     return $.extend(true, {}, $.inputmask.masksCache[mask]);
                 }
                 }
             }
             }
+            function preProcessMask(mask) {
+                mask = mask.toString();
+                if (opts.numericInput) { //TODO FIX FOR DYNAMIC MASKS WITH QUANTIFIERS
+                    mask = mask.split('').reverse();
+                    for (var ndx = 0; ndx < mask.length; ndx++) {
+                        if (mask[ndx] == opts.optionalmarker.start)
+                            mask[ndx] = opts.optionalmarker.end;
+                        else if (mask[ndx] == opts.optionalmarker.end)
+                            mask[ndx] = opts.optionalmarker.start;
+                        else if (mask[ndx] == opts.groupmarker.start)
+                            mask[ndx] = opts.groupmarker.end;
+                        else if (mask[ndx] == opts.groupmarker.end)
+                            mask[ndx] = opts.groupmarker.start;
+                    }
+                    mask = mask.join('');
+                }
+                return mask;
+            }
 
 
             if ($.isFunction(opts.mask)) { //allow mask to be a preprocessing fn - should return a valid mask
             if ($.isFunction(opts.mask)) { //allow mask to be a preprocessing fn - should return a valid mask
                 opts.mask = opts.mask.call(this, opts);
                 opts.mask = opts.mask.call(this, opts);
@@ -276,9 +280,9 @@
                     ms = [];
                     ms = [];
                     $.each(opts.mask, function (ndx, msk) {
                     $.each(opts.mask, function (ndx, msk) {
                         if (msk["mask"] != undefined && !$.isFunction(msk["mask"])) {
                         if (msk["mask"] != undefined && !$.isFunction(msk["mask"])) {
-                            ms.push(generateMask(msk["mask"].toString(), msk));
+                            ms.push(generateMask(preProcessMask(msk["mask"]), msk));
                         } else {
                         } else {
-                            ms.push(generateMask(msk.toString(), msk));
+                            ms.push(generateMask(preProcessMask(msk), msk));
                         }
                         }
                     });
                     });
                 } else {
                 } else {
@@ -288,9 +292,9 @@
                         if (altMask.length > 1)
                         if (altMask.length > 1)
                             altMask += ")|(";
                             altMask += ")|(";
                         if (msk["mask"] != undefined && !$.isFunction(msk["mask"])) {
                         if (msk["mask"] != undefined && !$.isFunction(msk["mask"])) {
-                            altMask += msk["mask"].toString();
+                            altMask += preProcessMask(msk["mask"]);
                         } else {
                         } else {
-                            altMask += msk.toString();
+                            altMask += preProcessMask(msk);
                         }
                         }
                     });
                     });
                     altMask += ")";
                     altMask += ")";
@@ -299,9 +303,9 @@
             } else {
             } else {
                 if (opts.mask) {
                 if (opts.mask) {
                     if (opts.mask["mask"] != undefined && !$.isFunction(opts.mask["mask"])) {
                     if (opts.mask["mask"] != undefined && !$.isFunction(opts.mask["mask"])) {
-                        ms = generateMask(opts.mask["mask"].toString(), opts.mask);
+                        ms = generateMask(preProcessMask(opts.mask["mask"]), opts.mask);
                     } else {
                     } else {
-                        ms = generateMask(opts.mask.toString(), opts.mask);
+                        ms = generateMask(preProcessMask(opts.mask), opts.mask);
                     }
                     }
                 }
                 }
             }
             }
@@ -1081,7 +1085,7 @@
             function clearOptionalTail(buffer) {
             function clearOptionalTail(buffer) {
                 var rl = determineLastRequiredPosition(), lmib = buffer.length - 1;
                 var rl = determineLastRequiredPosition(), lmib = buffer.length - 1;
                 for (; lmib > rl; lmib--) {
                 for (; lmib > rl; lmib--) {
-                    if (isMask(lmib)) break;
+                    if (isMask(lmib)) break; //fixme ismask is not good enough
                 }
                 }
                 buffer.splice(rl, lmib + 1 - rl);
                 buffer.splice(rl, lmib + 1 - rl);
             }
             }
@@ -1187,7 +1191,7 @@
                     $(npt).bind("mouseenter.inputmask", function (event) {
                     $(npt).bind("mouseenter.inputmask", function (event) {
                         var $input = $(this), input = this, value = input._valueGet();
                         var $input = $(this), input = this, value = input._valueGet();
                         if (value != "" && value != getBuffer().join('')) {
                         if (value != "" && value != getBuffer().join('')) {
-                            valueSet.call(this, $.isFunction(opts.onBeforeMask) ? (opts.onBeforeMask.call(el, value, opts) || value) : value);
+                            this._valueSet($.isFunction(opts.onBeforeMask) ? (opts.onBeforeMask.call(el, value, opts) || value) : value);
                             $input.trigger("setvalue");
                             $input.trigger("setvalue");
                         }
                         }
                     });
                     });