Robin Herbots 11 年 前
コミット
bc4c56ac6d

+ 15 - 11
dist/inputmask/jquery.inputmask.js

@@ -181,17 +181,21 @@
             return mask;
         }
         var ms = void 0;
-        if ($.isFunction(opts.mask) && (opts.mask = opts.mask.call(this, opts)), $.isArray(opts.mask)) if (multi) ms = [], 
-        $.each(opts.mask, function(ndx, msk) {
-            ms.push(void 0 == msk.mask || $.isFunction(msk.mask) ? generateMask(preProcessMask(msk), msk) : generateMask(preProcessMask(msk.mask), msk));
-        }); else {
-            opts.keepStatic = void 0 == opts.keepStatic ? !0 : opts.keepStatic;
-            var altMask = "(";
-            $.each(opts.mask, function(ndx, msk) {
-                altMask.length > 1 && (altMask += ")|("), altMask += preProcessMask(void 0 == msk.mask || $.isFunction(msk.mask) ? msk : msk.mask);
-            }), altMask += ")", ms = generateMask(altMask, 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;
+        if ($.isFunction(opts.mask) && (opts.mask = opts.mask.call(this, opts)), $.isArray(opts.mask)) {
+            if (multi) return ms = [], $.each(opts.mask, function(ndx, msk) {
+                ms.push(void 0 == msk.mask || $.isFunction(msk.mask) ? generateMask(preProcessMask(msk), msk) : generateMask(preProcessMask(msk.mask), msk));
+            }), ms;
+            if (opts.mask.length > 1) {
+                opts.keepStatic = void 0 == opts.keepStatic ? !0 : opts.keepStatic;
+                var altMask = "(";
+                return $.each(opts.mask, function(ndx, msk) {
+                    altMask.length > 1 && (altMask += ")|("), altMask += preProcessMask(void 0 == msk.mask || $.isFunction(msk.mask) ? msk : msk.mask);
+                }), altMask += ")", generateMask(altMask, opts.mask);
+            }
+            opts.mask = opts.mask.pop();
+        }
+        return 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)), 
+        ms;
     }
     function maskScope(actionObj, maskset, opts) {
         function getMaskTemplate(baseOnInput, minimalPos, includeInput) {

+ 15 - 11
dist/jquery.inputmask.bundle.js

@@ -179,17 +179,21 @@
             return mask;
         }
         var ms = void 0;
-        if ($.isFunction(opts.mask) && (opts.mask = opts.mask.call(this, opts)), $.isArray(opts.mask)) if (multi) ms = [], 
-        $.each(opts.mask, function(ndx, msk) {
-            ms.push(void 0 == msk.mask || $.isFunction(msk.mask) ? generateMask(preProcessMask(msk), msk) : generateMask(preProcessMask(msk.mask), msk));
-        }); else {
-            opts.keepStatic = void 0 == opts.keepStatic ? !0 : opts.keepStatic;
-            var altMask = "(";
-            $.each(opts.mask, function(ndx, msk) {
-                altMask.length > 1 && (altMask += ")|("), altMask += preProcessMask(void 0 == msk.mask || $.isFunction(msk.mask) ? msk : msk.mask);
-            }), altMask += ")", ms = generateMask(altMask, 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;
+        if ($.isFunction(opts.mask) && (opts.mask = opts.mask.call(this, opts)), $.isArray(opts.mask)) {
+            if (multi) return ms = [], $.each(opts.mask, function(ndx, msk) {
+                ms.push(void 0 == msk.mask || $.isFunction(msk.mask) ? generateMask(preProcessMask(msk), msk) : generateMask(preProcessMask(msk.mask), msk));
+            }), ms;
+            if (opts.mask.length > 1) {
+                opts.keepStatic = void 0 == opts.keepStatic ? !0 : opts.keepStatic;
+                var altMask = "(";
+                return $.each(opts.mask, function(ndx, msk) {
+                    altMask.length > 1 && (altMask += ")|("), altMask += preProcessMask(void 0 == msk.mask || $.isFunction(msk.mask) ? msk : msk.mask);
+                }), altMask += ")", generateMask(altMask, opts.mask);
+            }
+            opts.mask = opts.mask.pop();
+        }
+        return 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)), 
+        ms;
     }
     function maskScope(actionObj, maskset, opts) {
         function getMaskTemplate(baseOnInput, minimalPos, includeInput) {

ファイルの差分が大きいため隠しています
+ 1 - 1
dist/jquery.inputmask.bundle.min.js


+ 27 - 23
js/jquery.inputmask.js

@@ -276,7 +276,7 @@
                 opts.mask = opts.mask.call(this, opts);
             }
             if ($.isArray(opts.mask)) {
-                if (multi) {  //remove me
+                if (multi) {  //remove me legacy
                     ms = [];
                     $.each(opts.mask, function (ndx, msk) {
                         if (msk["mask"] != undefined && !$.isFunction(msk["mask"])) {
@@ -285,30 +285,34 @@
                             ms.push(generateMask(preProcessMask(msk), msk));
                         }
                     });
+                    return ms;
                 } else {
-                    opts.keepStatic = opts.keepStatic == undefined ? true : opts.keepStatic; //enable by default when passing multiple masks when the option is not explicitly specified
-                    var altMask = "(";
-                    $.each(opts.mask, function (ndx, msk) {
-                        if (altMask.length > 1)
-                            altMask += ")|(";
-                        if (msk["mask"] != undefined && !$.isFunction(msk["mask"])) {
-                            altMask += preProcessMask(msk["mask"]);
-                        } else {
-                            altMask += preProcessMask(msk);
-                        }
-                    });
-                    altMask += ")";
-                    ms = generateMask(altMask, opts.mask);
+                    if (opts.mask.length > 1) {
+                        opts.keepStatic = opts.keepStatic == undefined ? true : opts.keepStatic; //enable by default when passing multiple masks when the option is not explicitly specified
+                        var altMask = "(";
+                        $.each(opts.mask, function (ndx, msk) {
+                            if (altMask.length > 1)
+                                altMask += ")|(";
+                            if (msk["mask"] != undefined && !$.isFunction(msk["mask"])) {
+                                altMask += preProcessMask(msk["mask"]);
+                            } else {
+                                altMask += preProcessMask(msk);
+                            }
+                        });
+                        altMask += ")";
+                        return generateMask(altMask, opts.mask);
+                    } else opts.mask = opts.mask.pop();
                 }
-            } else {
-                if (opts.mask) {
-                    if (opts.mask["mask"] != undefined && !$.isFunction(opts.mask["mask"])) {
-                        ms = generateMask(preProcessMask(opts.mask["mask"]), opts.mask);
-                    } else {
-                        ms = generateMask(preProcessMask(opts.mask), opts.mask);
-                    }
+            }
+
+            if (opts.mask) {
+                if (opts.mask["mask"] != undefined && !$.isFunction(opts.mask["mask"])) {
+                    ms = generateMask(preProcessMask(opts.mask["mask"]), opts.mask);
+                } else {
+                    ms = generateMask(preProcessMask(opts.mask), opts.mask);
                 }
             }
+
             return ms;
         }
 
@@ -1144,7 +1148,7 @@
                                                 skipKeyPressEvent = true;
                                                 break;
                                             case "compositionupdate": case "compositionend":
-                                                skipInputEvent = true; //stop inutFallback
+                                                skipInputEvent = true; //stop inputFallback
                                                 break;
                                         }
                                         return handler.apply(this, arguments);
@@ -1719,7 +1723,7 @@
                     ).bind("compositionstart.inputmask", function (e) {
                         undoValue = getBuffer().join('');
                     }).bind("compositionupdate.inputmask", function (e) {
-                        
+
                     }).bind("compositionend.inputmask", compositionEndEvent);
 
                     if (PasteEventType === "paste") {

+ 15 - 0
qunit/tests_multi.js

@@ -220,4 +220,19 @@ test("inputmask({ mask: ['99.9', 'X'}) - annames", function () {
     $("#testmask").Type("x");
     equal($("#testmask").val(), "X", "Result " + $("#testmask").val());
     $("#testmask").remove();
+});
+
+test("inputmask({ mask: [{ \"mask\": \"###-##-####\" }]) - lynxlive", function () {
+    var $fixture = $("#qunit-fixture");
+    $fixture.append('<input type="text" id="testmask" />');
+    var ssns = [{ "mask": "###-##-####" }];
+    $('#testmask').inputmask({
+        mask: ssns,
+        greedy: false,
+        definitions: { '#': { validator: "[0-9]", cardinality: 1 } }
+    });
+   
+    $("#testmask").Type("123121234");
+    equal($("#testmask").val(), "123-12-1234", "Result " + $("#testmask").val());
+    $("#testmask").remove();
 });