浏览代码

fix for IE8 & extension to prototype array

Robin Herbots 11 年之前
父节点
当前提交
c566e1a051

+ 13 - 47
js/jquery.inputmask-multi.js

@@ -4,13 +4,15 @@
 * Copyright (c) 2010 - 2014 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 * Version: 0.0.0
+*
+*  THIS IS A TEMPORARY HACK TO BE COMPATIBLE WITH MULTIPLE MASKS LIKE IN VERSION 2.X - WHEN THE ALTERNATOR SYNTAX IS IMPLEMENTED inputmask-multi WILL BE DELETED!!
+*
+*
 */
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask-multi", ['jquery', 'jquery.inputmask'], factory);
     } else {
-        // Browser globals
         factory(jQuery);
     }
 }(function ($) {
@@ -168,13 +170,15 @@
                 isRTL = el.dir == "rtl" || opts.numericInput;
                 activeMasksetIndex = 0;
                 elmasks = $.map(masksets, function (msk, ndx) {
-                    var elMaskStr = '<input type="text" ';
-                    if ($el.attr("value")) elMaskStr += 'value="' + $el.attr("value") + '" ';
-                    if ($el.attr("dir")) elMaskStr += 'dir="' + $el.attr("dir") + '" ';
-                    elMaskStr += '/>';
-                    var elmask = $(elMaskStr)[0];
-                    $(elmask).inputmask($.extend({}, opts, { mask: msk.mask }));
-                    return elmask;
+                    if (isFinite(ndx)) { //handle extension in the prototype of array for ie8
+                        var elMaskStr = '<input type="text" ';
+                        if ($el.attr("value")) elMaskStr += 'value="' + $el.attr("value") + '" ';
+                        if ($el.attr("dir")) elMaskStr += 'dir="' + $el.attr("dir") + '" ';
+                        elMaskStr += '/>';
+                        var elmask = $(elMaskStr)[0];
+                        $(elmask).inputmask($.extend({}, opts, { mask: msk.mask }));
+                        return elmask;
+                    }
                 });
 
                 $el.data('_inputmask-multi', { "activeMasksetIndex": 0, "elmasks": elmasks });
@@ -274,44 +278,6 @@
                     case "mask":
                         mask(actionObj["el"]);
                         break;
-                    case "remove": //TODO
-                        var el = actionObj["el"];
-                        $el = $(el);
-                        maskset = $el.data('_inputmask')['maskset'];
-                        opts = $el.data('_inputmask')['opts'];
-                        //writeout the unmaskedvalue
-                        el._valueSet(unmaskedvalue($el));
-                        //unbind all events
-                        $el.unbind(".inputmask");
-                        $el.removeClass('focus-inputmask');
-                        //clear data
-                        $el.removeData('_inputmask');
-                        //restore the value property
-                        var valueProperty;
-                        if (Object.getOwnPropertyDescriptor)
-                            valueProperty = Object.getOwnPropertyDescriptor(el, "value");
-                        if (valueProperty && valueProperty.get) {
-                            if (el._valueGet) {
-                                Object.defineProperty(el, "value", {
-                                    get: el._valueGet,
-                                    set: el._valueSet
-                                });
-                            }
-                        } else if (document.__lookupGetter__ && el.__lookupGetter__("value")) {
-                            if (el._valueGet) {
-                                el.__defineGetter__("value", el._valueGet);
-                                el.__defineSetter__("value", el._valueSet);
-                            }
-                        }
-                        try { //try catch needed for IE7 as it does not supports deleting fns
-                            delete el._valueGet;
-                            delete el._valueSet;
-                        } catch (e) {
-                            el._valueGet = undefined;
-                            el._valueSet = undefined;
-
-                        }
-                        break;
                 }
             }
         };

+ 0 - 2
js/jquery.inputmask.date.extensions.js

@@ -9,10 +9,8 @@ Optional extensions on the jquery.inputmask base
 */
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask.date.extensions", ['jquery', 'jquery.inputmask'], factory);
     } else {
-        // Browser globals
         factory(jQuery);
     }
 }(function ($) {

+ 0 - 2
js/jquery.inputmask.extensions.js

@@ -9,10 +9,8 @@ Optional extensions on the jquery.inputmask base
 */
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask.extensions", ['jquery', 'jquery.inputmask'], factory);
     } else {
-        // Browser globals
         factory(jQuery);
     }
 }(function ($) {

+ 4 - 3
js/jquery.inputmask.js

@@ -8,10 +8,8 @@
 
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask", ['jquery'], factory);
     } else {
-        // Browser globals
         factory(jQuery);
     }
 }(function ($) {
@@ -91,7 +89,10 @@
                             // Group closing
                             openingToken = openenings.pop();
                             if (openenings.length > 0) {
-                                openenings[openenings.length - 1]["matches"].push(openingToken);
+                                openingToken = openenings[openenings.length - 1];
+                                openingToken["matches"].push(openingToken);
+                                if (openingToken.isAlternator)
+                                    openenings.pop();
                             } else {
                                 currentToken.matches.push(openingToken);
                             }

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

@@ -9,10 +9,8 @@ Optional extensions on the jquery.inputmask base
 */
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask.numeric.extensions", ['jquery', 'jquery.inputmask'], factory);
     } else {
-        // Browser globals
         factory(jQuery);
     }
 }(function ($) {

+ 0 - 2
js/jquery.inputmask.phone.extensions.js

@@ -19,10 +19,8 @@ When using this extension make sure you specify the correct url to get the masks
 */
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask.phone.extensions", ['jquery', 'jquery.inputmask'], factory);
     } else {
-        // Browser globals
         factory(jQuery);
     }
 }(function ($) {

+ 0 - 2
js/jquery.inputmask.regex.extensions.js

@@ -10,10 +10,8 @@ Allows for using regular expressions as a mask
 */
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask.regex.extensions", ['jquery', 'jquery.inputmask'], factory);
     } else {
-        // Browser globals
         factory(jQuery);
     }
 }(function ($) {