ソースを参照

some fixes for IE7&8&FF

Robin Herbots 11 年 前
コミット
a301ddf69e

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "jquery.inputmask",
   "name": "jquery.inputmask",
-  "version": "3.0.59",
+  "version": "3.0.60",
   "main": "./dist/jquery.inputmask.bundle.js",
   "main": "./dist/jquery.inputmask.bundle.js",
   "keywords" : ["jQuery", "plugins", "input", "form", "inputmask", "mask"],
   "keywords" : ["jQuery", "plugins", "input", "form", "inputmask", "mask"],
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",

+ 1 - 1
build.properties

@@ -7,7 +7,7 @@ distdir = dist
 
 
 build.major = 3
 build.major = 3
 build.minor = 0
 build.minor = 0
-build.revision = 59
+build.revision = 60
 
 
 target = jquery.inputmask.bundle.js
 target = jquery.inputmask.bundle.js
 target.min = jquery.inputmask.bundle.min.js
 target.min = jquery.inputmask.bundle.min.js

+ 34 - 77
dist/jquery.inputmask.bundle.js

@@ -3,15 +3,13 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2014 Robin Herbots
 * Copyright (c) 2010 - 2014 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.0.59
+* Version: 3.0.60
 */
 */
 
 
 (function (factory) {
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask", ['jquery'], factory);
         define("jquery.inputmask", ['jquery'], factory);
     } else {
     } else {
-        // Browser globals
         factory(jQuery);
         factory(jQuery);
     }
     }
 }(function ($) {
 }(function ($) {
@@ -91,7 +89,10 @@
                             // Group closing
                             // Group closing
                             openingToken = openenings.pop();
                             openingToken = openenings.pop();
                             if (openenings.length > 0) {
                             if (openenings.length > 0) {
-                                openenings[openenings.length - 1]["matches"].push(openingToken);
+                                var currentOpeningToken = openenings[openenings.length - 1];
+                                currentOpeningToken["matches"].push(openingToken);
+                                if (currentOpeningToken.isAlternator)
+                                    openenings.pop();
                             } else {
                             } else {
                                 currentToken.matches.push(openingToken);
                                 currentToken.matches.push(openingToken);
                             }
                             }
@@ -1811,14 +1812,16 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2014 Robin Herbots
 * Copyright (c) 2010 - 2014 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.0.59
+* Version: 3.0.60
+*
+*  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) {
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask-multi", ['jquery', 'jquery.inputmask'], factory);
         define("jquery.inputmask-multi", ['jquery', 'jquery.inputmask'], factory);
     } else {
     } else {
-        // Browser globals
         factory(jQuery);
         factory(jQuery);
     }
     }
 }(function ($) {
 }(function ($) {
@@ -1976,13 +1979,15 @@
                 isRTL = el.dir == "rtl" || opts.numericInput;
                 isRTL = el.dir == "rtl" || opts.numericInput;
                 activeMasksetIndex = 0;
                 activeMasksetIndex = 0;
                 elmasks = $.map(masksets, function (msk, ndx) {
                 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 });
                 $el.data('_inputmask-multi', { "activeMasksetIndex": 0, "elmasks": elmasks });
@@ -2082,44 +2087,6 @@
                     case "mask":
                     case "mask":
                         mask(actionObj["el"]);
                         mask(actionObj["el"]);
                         break;
                         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;
                 }
                 }
             }
             }
         };
         };
@@ -2150,16 +2117,14 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2014 Robin Herbots
 Copyright (c) 2010 - 2014 Robin Herbots
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-Version: 3.0.59
+Version: 3.0.60
 
 
 Optional extensions on the jquery.inputmask base
 Optional extensions on the jquery.inputmask base
 */
 */
 (function (factory) {
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask.extensions", ['jquery', 'jquery.inputmask'], factory);
         define("jquery.inputmask.extensions", ['jquery', 'jquery.inputmask'], factory);
     } else {
     } else {
-        // Browser globals
         factory(jQuery);
         factory(jQuery);
     }
     }
 }(function ($) {
 }(function ($) {
@@ -2279,16 +2244,14 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2014 Robin Herbots
 Copyright (c) 2010 - 2014 Robin Herbots
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-Version: 3.0.59
+Version: 3.0.60
 
 
 Optional extensions on the jquery.inputmask base
 Optional extensions on the jquery.inputmask base
 */
 */
 (function (factory) {
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask.date.extensions", ['jquery', 'jquery.inputmask'], factory);
         define("jquery.inputmask.date.extensions", ['jquery', 'jquery.inputmask'], factory);
     } else {
     } else {
-        // Browser globals
         factory(jQuery);
         factory(jQuery);
     }
     }
 }(function ($) {
 }(function ($) {
@@ -2479,15 +2442,15 @@ Optional extensions on the jquery.inputmask base
 
 
                             isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
                             isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
                             if (isValid) {
                             if (isValid) {
-                                maskset.buffer[pos++] = yearPrefix[0];
+                                maskset.buffer[pos++] = yearPrefix.charAt(0);
                                 return { "pos": pos };
                                 return { "pos": pos };
                             }
                             }
                             yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 2);
                             yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 2);
 
 
                             isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
                             isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
                             if (isValid) {
                             if (isValid) {
-                                maskset.buffer[pos++] = yearPrefix[0];
-                                maskset.buffer[pos++] = yearPrefix[1];
+                                maskset.buffer[pos++] = yearPrefix.charAt(0);
+                                maskset.buffer[pos++] = yearPrefix.charAt(1);
                                 return { "pos": pos };
                                 return { "pos": pos };
                             }
                             }
                         }
                         }
@@ -2503,7 +2466,7 @@ Optional extensions on the jquery.inputmask base
 
 
                             isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear);
                             isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear);
                             if (isValid) {
                             if (isValid) {
-                                maskset.buffer[pos++] = yearPrefix[1];
+                                maskset.buffer[pos++] = yearPrefix.charAt(1);
                                 return { "pos": pos };
                                 return { "pos": pos };
                             }
                             }
 
 
@@ -2524,9 +2487,9 @@ Optional extensions on the jquery.inputmask base
                                 }
                                 }
                             } else isValid = false;
                             } else isValid = false;
                             if (isValid) {
                             if (isValid) {
-                                maskset.buffer[pos - 1] = yearPrefix[0];
-                                maskset.buffer[pos++] = yearPrefix[1];
-                                maskset.buffer[pos++] = chrs[0];
+                                maskset.buffer[pos - 1] = yearPrefix.charAt(0);
+                                maskset.buffer[pos++] = yearPrefix.charAt(1);
+                                maskset.buffer[pos++] = chrs.charAt(0);
                                 return { "refreshFromBuffer": { start: pos - 3, end: pos }, "pos": pos };
                                 return { "refreshFromBuffer": { start: pos - 3, end: pos }, "pos": pos };
                             }
                             }
                         }
                         }
@@ -2775,16 +2738,14 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2014 Robin Herbots
 Copyright (c) 2010 - 2014 Robin Herbots
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-Version: 3.0.59
+Version: 3.0.60
 
 
 Optional extensions on the jquery.inputmask base
 Optional extensions on the jquery.inputmask base
 */
 */
 (function (factory) {
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask.numeric.extensions", ['jquery', 'jquery.inputmask'], factory);
         define("jquery.inputmask.numeric.extensions", ['jquery', 'jquery.inputmask'], factory);
     } else {
     } else {
-        // Browser globals
         factory(jQuery);
         factory(jQuery);
     }
     }
 }(function ($) {
 }(function ($) {
@@ -2915,7 +2876,7 @@ Optional extensions on the jquery.inputmask base
                                 //handle 0 for integerpart
                                 //handle 0 for integerpart
                                 var matchRslt = maskset.buffer.join('').match(opts.regex.integerPart(opts)), radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
                                 var matchRslt = maskset.buffer.join('').match(opts.regex.integerPart(opts)), radixPosition = $.inArray(opts.radixPoint, maskset.buffer);
                                 if (matchRslt) {
                                 if (matchRslt) {
-                                    if (matchRslt["0"][0].indexOf("0") == 0 && pos >= opts.prefix.length) {
+                                    if (matchRslt["0"].indexOf("0") == 0 && pos >= opts.prefix.length) {
                                         if (radixPosition == -1 || (pos <= radixPosition && maskset["validPositions"][radixPosition] == undefined)) {
                                         if (radixPosition == -1 || (pos <= radixPosition && maskset["validPositions"][radixPosition] == undefined)) {
                                             maskset.buffer.splice(matchRslt.index, 1);
                                             maskset.buffer.splice(matchRslt.index, 1);
                                             pos = pos > matchRslt.index ? pos - 1 : matchRslt.index;
                                             pos = pos > matchRslt.index ? pos - 1 : matchRslt.index;
@@ -3027,17 +2988,15 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2014 Robin Herbots
 Copyright (c) 2010 - 2014 Robin Herbots
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-Version: 3.0.59
+Version: 3.0.60
 
 
 Regex extensions on the jquery.inputmask base
 Regex extensions on the jquery.inputmask base
 Allows for using regular expressions as a mask
 Allows for using regular expressions as a mask
 */
 */
 (function (factory) {
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask.regex.extensions", ['jquery', 'jquery.inputmask'], factory);
         define("jquery.inputmask.regex.extensions", ['jquery', 'jquery.inputmask'], factory);
     } else {
     } else {
-        // Browser globals
         factory(jQuery);
         factory(jQuery);
     }
     }
 }(function ($) {
 }(function ($) {
@@ -3160,7 +3119,7 @@ Allows for using regular expressions as a mask
                                     }
                                     }
                                 } else {
                                 } else {
                                     var testExp;
                                     var testExp;
-                                    if (matchToken[0] == "[") {
+                                    if (matchToken.charAt(0) == "[") {
                                         testExp = regexPart;
                                         testExp = regexPart;
                                         testExp += matchToken;
                                         testExp += matchToken;
                                         for (var j = 0; j < openGroupCount; j++) {
                                         for (var j = 0; j < openGroupCount; j++) {
@@ -3170,7 +3129,7 @@ Allows for using regular expressions as a mask
                                         isvalid = exp.test(bufferStr);
                                         isvalid = exp.test(bufferStr);
                                     } else {
                                     } else {
                                         for (var l = 0, tl = matchToken.length; l < tl; l++) {
                                         for (var l = 0, tl = matchToken.length; l < tl; l++) {
-                                            if (matchToken[l] == "\\") continue;
+                                            if (matchToken.charAt(l) == "\\") continue;
                                             testExp = regexPart;
                                             testExp = regexPart;
                                             testExp += matchToken.substr(0, l + 1);
                                             testExp += matchToken.substr(0, l + 1);
                                             testExp = testExp.replace(/\|$/, "");
                                             testExp = testExp.replace(/\|$/, "");
@@ -3222,7 +3181,7 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2014 Robin Herbots
 Copyright (c) 2010 - 2014 Robin Herbots
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
 Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-Version: 3.0.59
+Version: 3.0.60
 
 
 Phone extension.
 Phone extension.
 When using this extension make sure you specify the correct url to get the masks
 When using this extension make sure you specify the correct url to get the masks
@@ -3238,10 +3197,8 @@ When using this extension make sure you specify the correct url to get the masks
 */
 */
 (function (factory) {
 (function (factory) {
     if (typeof define === 'function' && define.amd) {
     if (typeof define === 'function' && define.amd) {
-        // AMD. Register as an anonymous module.
         define("jquery.inputmask.phone.extensions", ['jquery', 'jquery.inputmask'], factory);
         define("jquery.inputmask.phone.extensions", ['jquery', 'jquery.inputmask'], factory);
     } else {
     } else {
-        // Browser globals
         factory(jQuery);
         factory(jQuery);
     }
     }
 }(function ($) {
 }(function ($) {

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


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


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


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


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


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


+ 1 - 1
jquery.inputmask.jquery.json

@@ -8,7 +8,7 @@
 		"inputmask",
 		"inputmask",
 		"mask"
 		"mask"
     ],
     ],
-    "version": "3.0.59",
+    "version": "3.0.60",
     "author": {
     "author": {
         "name": "Robin Herbots",
         "name": "Robin Herbots",
         "url": "http://github.com/RobinHerbots/jquery.inputmask"
         "url": "http://github.com/RobinHerbots/jquery.inputmask"

+ 7 - 7
js/jquery.inputmask.date.extensions.js

@@ -201,15 +201,15 @@ Optional extensions on the jquery.inputmask base
 
 
                             isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
                             isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
                             if (isValid) {
                             if (isValid) {
-                                maskset.buffer[pos++] = yearPrefix[0];
+                                maskset.buffer[pos++] = yearPrefix.charAt(0);
                                 return { "pos": pos };
                                 return { "pos": pos };
                             }
                             }
                             yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 2);
                             yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 2);
 
 
                             isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
                             isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear);
                             if (isValid) {
                             if (isValid) {
-                                maskset.buffer[pos++] = yearPrefix[0];
-                                maskset.buffer[pos++] = yearPrefix[1];
+                                maskset.buffer[pos++] = yearPrefix.charAt(0);
+                                maskset.buffer[pos++] = yearPrefix.charAt(1);
                                 return { "pos": pos };
                                 return { "pos": pos };
                             }
                             }
                         }
                         }
@@ -225,7 +225,7 @@ Optional extensions on the jquery.inputmask base
 
 
                             isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear);
                             isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear);
                             if (isValid) {
                             if (isValid) {
-                                maskset.buffer[pos++] = yearPrefix[1];
+                                maskset.buffer[pos++] = yearPrefix.charAt(1);
                                 return { "pos": pos };
                                 return { "pos": pos };
                             }
                             }
 
 
@@ -246,9 +246,9 @@ Optional extensions on the jquery.inputmask base
                                 }
                                 }
                             } else isValid = false;
                             } else isValid = false;
                             if (isValid) {
                             if (isValid) {
-                                maskset.buffer[pos - 1] = yearPrefix[0];
-                                maskset.buffer[pos++] = yearPrefix[1];
-                                maskset.buffer[pos++] = chrs[0];
+                                maskset.buffer[pos - 1] = yearPrefix.charAt(0);
+                                maskset.buffer[pos++] = yearPrefix.charAt(1);
+                                maskset.buffer[pos++] = chrs.charAt(0);
                                 return { "refreshFromBuffer": { start: pos - 3, end: pos }, "pos": pos };
                                 return { "refreshFromBuffer": { start: pos - 3, end: pos }, "pos": pos };
                             }
                             }
                         }
                         }

+ 3 - 3
js/jquery.inputmask.js

@@ -89,9 +89,9 @@
                             // Group closing
                             // Group closing
                             openingToken = openenings.pop();
                             openingToken = openenings.pop();
                             if (openenings.length > 0) {
                             if (openenings.length > 0) {
-                                openingToken = openenings[openenings.length - 1];
-                                openingToken["matches"].push(openingToken);
-                                if (openingToken.isAlternator)
+                                var currentOpeningToken = openenings[openenings.length - 1];
+                                currentOpeningToken["matches"].push(openingToken);
+                                if (currentOpeningToken.isAlternator)
                                     openenings.pop();
                                     openenings.pop();
                             } else {
                             } else {
                                 currentToken.matches.push(openingToken);
                                 currentToken.matches.push(openingToken);

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

@@ -134,7 +134,7 @@ Allows for using regular expressions as a mask
                                     }
                                     }
                                 } else {
                                 } else {
                                     var testExp;
                                     var testExp;
-                                    if (matchToken[0] == "[") {
+                                    if (matchToken.charAt(0) == "[") {
                                         testExp = regexPart;
                                         testExp = regexPart;
                                         testExp += matchToken;
                                         testExp += matchToken;
                                         for (var j = 0; j < openGroupCount; j++) {
                                         for (var j = 0; j < openGroupCount; j++) {
@@ -144,7 +144,7 @@ Allows for using regular expressions as a mask
                                         isvalid = exp.test(bufferStr);
                                         isvalid = exp.test(bufferStr);
                                     } else {
                                     } else {
                                         for (var l = 0, tl = matchToken.length; l < tl; l++) {
                                         for (var l = 0, tl = matchToken.length; l < tl; l++) {
-                                            if (matchToken[l] == "\\") continue;
+                                            if (matchToken.charAt(l) == "\\") continue;
                                             testExp = regexPart;
                                             testExp = regexPart;
                                             testExp += matchToken.substr(0, l + 1);
                                             testExp += matchToken.substr(0, l + 1);
                                             testExp = testExp.replace(/\|$/, "");
                                             testExp = testExp.replace(/\|$/, "");

+ 1 - 1
qunit/simulator.js

@@ -92,6 +92,6 @@ $.fn.Type = function (inputStr) {
 
 
 $.fn.paste = function (inputStr) {
 $.fn.paste = function (inputStr) {
     var $input = $(this);
     var $input = $(this);
-    $input[0]._valueSet(inputStr);
+    window.clipboardData ? window.clipboardData.setData("Text", inputStr) : $input[0]._valueSet(inputStr);
     $input.trigger('paste');
     $input.trigger('paste');
 }
 }

+ 2 - 0
qunit/tests_base.js

@@ -567,6 +567,7 @@ asyncTest("inputmask(\"+7 (999) 999-99-99\") ~ paste \"+7 (+79114041112___) ___-
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask("+7 (999) 999-99-99");
     $("#testmask").inputmask("+7 (999) 999-99-99");
+    $("#testmask")[0].focus();
     $("#testmask").paste("+7 (+79114041112___) ___-__-__");
     $("#testmask").paste("+7 (+79114041112___) ___-__-__");
 
 
     setTimeout(function () {
     setTimeout(function () {
@@ -587,6 +588,7 @@ asyncTest("inputmask(\"+7 (999) 999-99-99\") ~ paste \"0079114041112\" - monobla
             return strippedValue;
             return strippedValue;
         }
         }
     });
     });
+    $("#testmask")[0].focus();
     $("#testmask").paste("0079114041112");
     $("#testmask").paste("0079114041112");
 
 
     setTimeout(function () {
     setTimeout(function () {

+ 6 - 4
qunit/tests_dynamic.js

@@ -59,7 +59,7 @@ test("email mask greedy false", function () {
 
 
     $("#testmask").remove();
     $("#testmask").remove();
 });
 });
-test("email mask greedy true", function () {
+asyncTest("email mask greedy true", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask("email", { greedy: true });
     $("#testmask").inputmask("email", { greedy: true });
@@ -67,9 +67,11 @@ test("email mask greedy true", function () {
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
     $("#testmask").Type("some.body@mail.com");
     $("#testmask").Type("some.body@mail.com");
     $("#testmask").blur();
     $("#testmask").blur();
-    equal($("#testmask").val(), "some.body@mail.com", "Result " + $("#testmask").val());
-
-    $("#testmask").remove();
+    setTimeout(function () {
+        start();
+        equal($("#testmask").val(), "some.body@mail.com", "Result " + $("#testmask").val());
+        $("#testmask").remove();
+    }, 0);
 });
 });
 
 
 test("email mask - partial input", function () {
 test("email mask - partial input", function () {

+ 4 - 4
qunit/tests_formatvalidate.js

@@ -84,7 +84,7 @@ test("YoussefTaghlabi isValid(\"123,456.78\", { alias: \"decimal\" }", function
     var isValid = $.inputmask.isValid("123,456.78", {
     var isValid = $.inputmask.isValid("123,456.78", {
         alias: "decimal", radixPoint: ".",
         alias: "decimal", radixPoint: ".",
         groupSeparator: ",",
         groupSeparator: ",",
-        groupSize: 3,
+        groupSize: 3
     });
     });
     equal(isValid, true, "Result " + isValid);
     equal(isValid, true, "Result " + isValid);
 });
 });
@@ -92,7 +92,7 @@ test("YoussefTaghlabi isValid(\"12,\", { alias: \"decimal\" }", function () {
     var isValid = $.inputmask.isValid("12,", {
     var isValid = $.inputmask.isValid("12,", {
         alias: "decimal", radixPoint: ".",
         alias: "decimal", radixPoint: ".",
         groupSeparator: ",",
         groupSeparator: ",",
-        groupSize: 3,
+        groupSize: 3
     });
     });
     equal(isValid, false, "Result " + isValid);
     equal(isValid, false, "Result " + isValid);
 });
 });
@@ -100,7 +100,7 @@ test("YoussefTaghlabi isValid(\"12,1.45\", { alias: \"decimal\" }", function ()
     var isValid = $.inputmask.isValid("12,1.45", {
     var isValid = $.inputmask.isValid("12,1.45", {
         alias: "decimal", radixPoint: ".",
         alias: "decimal", radixPoint: ".",
         groupSeparator: ",",
         groupSeparator: ",",
-        groupSize: 3,
+        groupSize: 3
     });
     });
     equal(isValid, false, "Result " + isValid);
     equal(isValid, false, "Result " + isValid);
 });
 });
@@ -108,7 +108,7 @@ test("YoussefTaghlabi isValid(\"12,345.67\", { alias: \"decimal\" }", function (
     var isValid = $.inputmask.isValid("12,345.67", {
     var isValid = $.inputmask.isValid("12,345.67", {
         alias: "decimal", radixPoint: ".",
         alias: "decimal", radixPoint: ".",
         groupSeparator: ",",
         groupSeparator: ",",
-        groupSize: 3,
+        groupSize: 3
     });
     });
     equal(isValid, true, "Result " + isValid);
     equal(isValid, true, "Result " + isValid);
 });
 });

+ 34 - 22
qunit/tests_ip.js

@@ -1,60 +1,72 @@
-module("IP - masks")
-test("inputmask(\"ip\" - 10.10.10.10", function () {
+module("IP - masks");
+asyncTest("inputmask(\"ip\" - 10.10.10.10", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask2" />');
     $fixture.append('<input type="text" id="testmask2" />');
-    $("#testmask").inputmask("ip")
+    $("#testmask").inputmask("ip");
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
     $("#testmask").Type("10.10.10.10");
     $("#testmask").Type("10.10.10.10");
     $("#testmask2")[0].focus();
     $("#testmask2")[0].focus();
-    equal($("#testmask").val(), "10.10.10.10", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        start();
+        equal($("#testmask").val(), "10.10.10.10", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
-    $("#testmask2").remove();
+        $("#testmask").remove();
+        $("#testmask2").remove();
+    }, 0);
 });
 });
 
 
-test("inputmask(\"ip\" - 1.1.1.1", function () {
+asyncTest("inputmask(\"ip\" - 1.1.1.1", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask2" />');
     $fixture.append('<input type="text" id="testmask2" />');
-    $("#testmask").inputmask("ip")
+    $("#testmask").inputmask("ip");
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
     $("#testmask").Type("1.1.1.1");
     $("#testmask").Type("1.1.1.1");
     $("#testmask2")[0].focus();
     $("#testmask2")[0].focus();
-    equal($("#testmask").val(), "1.1.1.1", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        start();
+        equal($("#testmask").val(), "1.1.1.1", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
-    $("#testmask2").remove();
+        $("#testmask").remove();
+        $("#testmask2").remove();
+    }, 0);
 });
 });
 
 
-test("inputmask(\"ip\" - 255.255.255.255", function () {
+asyncTest("inputmask(\"ip\" - 255.255.255.255", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask2" />');
     $fixture.append('<input type="text" id="testmask2" />');
-    $("#testmask").inputmask("ip")
+    $("#testmask").inputmask("ip");
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
     $("#testmask").Type("255.255.255.255");
     $("#testmask").Type("255.255.255.255");
-    $("#testmask2")[0].focus();
-    equal($("#testmask").val(), "255.255.255.255", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        start();
+        $("#testmask2")[0].focus();
+        equal($("#testmask").val(), "255.255.255.255", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
-    $("#testmask2").remove();
+        $("#testmask").remove();
+        $("#testmask2").remove();
+    }, 0);
 });
 });
 
 
-test("inputmask(\"ip\" - 192.168.1.100", function () {
+asyncTest("inputmask(\"ip\" - 192.168.1.100", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask2" />');
     $fixture.append('<input type="text" id="testmask2" />');
-    $("#testmask").inputmask("ip")
+    $("#testmask").inputmask("ip");
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
     $("#testmask").Type("192.168.1.100");
     $("#testmask").Type("192.168.1.100");
     $("#testmask2")[0].focus();
     $("#testmask2")[0].focus();
-    equal($("#testmask").val(), "192.168.1.100", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        start();
+        equal($("#testmask").val(), "192.168.1.100", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
-    $("#testmask2").remove();
+        $("#testmask").remove();
+        $("#testmask2").remove();
+    }, 0);
 });
 });

+ 7 - 5
qunit/tests_multi.js

@@ -125,11 +125,13 @@ asyncTest("inputmask({ mask: [\"99999\", \"99999-9999\", \"999999-9999\"]]}) - i
     $("#testmask").inputmask({ mask: ["99999", "99999-9999", "999999-9999"] });
     $("#testmask").inputmask({ mask: ["99999", "99999-9999", "999999-9999"] });
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
-    $("#testmask").Type("123456");
-    setTimeout(function () {
-        equal($("#testmask").val(), "____-654321", "Result " + $("#testmask").val());
-        start();
-        $("#testmask").remove();
+    setTimeout(function () { //needed to pass on ie
+        $("#testmask").Type("123456");
+        setTimeout(function () {
+            start();
+            equal($("#testmask").val(), "____-654321", "Result " + $("#testmask").val());
+            $("#testmask").remove();
+        }, 0);
     }, 0);
     }, 0);
 });
 });
 
 

+ 2 - 1
qunit/tests_numeric.js

@@ -270,7 +270,8 @@ test("numeric alias with allowMinus:false type=number - mask not applied - Marti
     $("#testmask").Type("123456");
     $("#testmask").Type("123456");
     $("#testmask").SendKey("-");
     $("#testmask").SendKey("-");
 
 
-    equal($("#testmask").val(), "", "Result " + $("#testmask").val());
+    //IE7 does not know type=number and treats as type=text
+    ok($("#testmask").val() == "" || $("#testmask").val() == "123456", "Result " + $("#testmask").val());
     $("#testmask").remove();
     $("#testmask").remove();
 });
 });
 
 

+ 122 - 95
qunit/tests_numericinput.js

@@ -1,177 +1,198 @@
 module("Direction RTL");
 module("Direction RTL");
-test("inputmask(\"999.999.999\") - delete 2nd with backspace, continue the mask", function () {
+asyncTest("inputmask(\"999.999.999\") - delete 2nd with backspace, continue the mask", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" dir="rtl" />');
     $fixture.append('<input type="text" id="testmask" dir="rtl" />');
     $("#testmask").inputmask("999.999.999");
     $("#testmask").inputmask("999.999.999");
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
+    setTimeout(function () {
+        $("#testmask").SendKey("1");
+        $("#testmask").SendKey("2");
+        $("#testmask").SendKey("3");
+        $("#testmask").SendKey(keyCodes.RIGHT);
+        $("#testmask").SendKey(keyCodes.RIGHT);
+        $("#testmask").SendKey(keyCodes.RIGHT);
+        $("#testmask").SendKey(keyCodes.BACKSPACE);
+        $("#testmask").SendKey("4");
+        $("#testmask").SendKey(keyCodes.LEFT);
+        $("#testmask").SendKey("5");
+        $("#testmask").SendKey("6");
+        start();
+        equal($("#testmask").val(), "___._65.341", "Result " + $("#testmask").val());
 
 
-    $("#testmask").SendKey("1");
-    $("#testmask").SendKey("2");
-    $("#testmask").SendKey("3");
-    $("#testmask").SendKey(keyCodes.RIGHT);
-    $("#testmask").SendKey(keyCodes.RIGHT);
-    $("#testmask").SendKey(keyCodes.RIGHT);
-    $("#testmask").SendKey(keyCodes.BACKSPACE);
-    $("#testmask").SendKey("4");
-    $("#testmask").SendKey(keyCodes.LEFT);
-    $("#testmask").SendKey("5");
-    $("#testmask").SendKey("6");
-
-    equal($("#testmask").val(), "___._65.341", "Result " + $("#testmask").val());
-
-    $("#testmask").remove();
+        $("#testmask").remove();
+    }, 0);
 });
 });
 
 
-test("inputmask(\"999.999.999\") - delete 2nd with delete, continue the mask", function () {
+asyncTest("inputmask(\"999.999.999\") - delete 2nd with delete, continue the mask", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" dir="rtl" />');
     $fixture.append('<input type="text" id="testmask" dir="rtl" />');
     $("#testmask").inputmask("999.999.999");
     $("#testmask").inputmask("999.999.999");
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
+    setTimeout(function () {
+        $("#testmask").SendKey("1");
+        $("#testmask").SendKey("2");
+        $("#testmask").SendKey("3");
+        $("#testmask").SendKey(keyCodes.RIGHT);
+        $("#testmask").SendKey(keyCodes.RIGHT);
+        $("#testmask").SendKey(keyCodes.DELETE);
+        $("#testmask").SendKey("4");
+        $("#testmask").SendKey(keyCodes.LEFT);
+        $("#testmask").SendKey("5");
+        $("#testmask").SendKey("6");
+        start();
+        equal($("#testmask").val(), "___._65.341", "Result " + $("#testmask").val());
 
 
-    $("#testmask").SendKey("1");
-    $("#testmask").SendKey("2");
-    $("#testmask").SendKey("3");
-    $("#testmask").SendKey(keyCodes.RIGHT);
-    $("#testmask").SendKey(keyCodes.RIGHT);
-    $("#testmask").SendKey(keyCodes.DELETE);
-    $("#testmask").SendKey("4");
-    $("#testmask").SendKey(keyCodes.LEFT);
-    $("#testmask").SendKey("5");
-    $("#testmask").SendKey("6");
-
-    equal($("#testmask").val(), "___._65.341", "Result " + $("#testmask").val());
-
-    $("#testmask").remove();
+        $("#testmask").remove();
+    }, 0);
 });
 });
 
 
-test("inputmask(\"999-aaa-999\")", function () {
+asyncTest("inputmask(\"999-aaa-999\")", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" dir="rtl" />');
     $fixture.append('<input type="text" id="testmask" dir="rtl" />');
     $("#testmask").inputmask("999-aaa-999");
     $("#testmask").inputmask("999-aaa-999");
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
-    $("#testmask").Type("123abc12");
-
-    equal($("#testmask").val(), "_21-cba-321", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        $("#testmask").Type("123abc12");
+        start();
+        equal($("#testmask").val(), "_21-cba-321", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
+        $("#testmask").remove();
+    }, 0);
 });
 });
 
 
-test("inputmask(\"999-999-999\") - replace selection", function () {
+asyncTest("inputmask(\"999-999-999\") - replace selection", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" dir="rtl" />');
     $fixture.append('<input type="text" id="testmask" dir="rtl" />');
     $("#testmask").inputmask("999-999-999");
     $("#testmask").inputmask("999-999-999");
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
-    $("#testmask").Type("123456789");
-    caret($("#testmask"), 4, 7);
-    $("#testmask").Type("5");
-
-    equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        $("#testmask").Type("123456789");
+        caret($("#testmask"), 4, 7);
+        $("#testmask").Type("5");
+        start();
+        equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
+        $("#testmask").remove();
+    }, 0);
 });
 });
 
 
-test("inputmask(\"999-999-999\") - replace selection with backspace", function () {
+asyncTest("inputmask(\"999-999-999\") - replace selection with backspace", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" dir="rtl" />');
     $fixture.append('<input type="text" id="testmask" dir="rtl" />');
     $("#testmask").inputmask("999-999-999");
     $("#testmask").inputmask("999-999-999");
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
-    $("#testmask").Type("123456789");
-    caret($("#testmask"), 4, 7);
-    $("#testmask").SendKey(keyCodes.BACKSPACE);
-    $("#testmask").Type("5");
-
-    equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        $("#testmask").Type("123456789");
+        caret($("#testmask"), 4, 7);
+        $("#testmask").SendKey(keyCodes.BACKSPACE);
+        $("#testmask").Type("5");
+        start();
+        equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
+        $("#testmask").remove();
+    }, 0);
 });
 });
 
 
-test("inputmask(\"999-999-999\") - replace selection - with delete", function () {
+asyncTest("inputmask(\"999-999-999\") - replace selection - with delete", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" dir="rtl" />');
     $fixture.append('<input type="text" id="testmask" dir="rtl" />');
     $("#testmask").inputmask("999-999-999");
     $("#testmask").inputmask("999-999-999");
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
-    $("#testmask").Type("123456789");
-    caret($("#testmask"), 4, 7);
-    $("#testmask").SendKey(keyCodes.DELETE);
-    $("#testmask").Type("5");
-
-    equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        $("#testmask").Type("123456789");
+        caret($("#testmask"), 4, 7);
+        $("#testmask").SendKey(keyCodes.DELETE);
+        $("#testmask").Type("5");
+        start();
+        equal($("#testmask").val(), "__9-875-321", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
+        $("#testmask").remove();
+    }, 0);
 });
 });
 
 
 module("Numeric Input");
 module("Numeric Input");
-test("inputmask({ mask: \"9\", numericInput: true, repeat: 10, greedy: true }); - 1234567890", function () {
+asyncTest("inputmask({ mask: \"9\", numericInput: true, repeat: 10, greedy: true }); - 1234567890", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask({ mask: "9", numericInput: true, repeat: 10, greedy: true });
     $("#testmask").inputmask({ mask: "9", numericInput: true, repeat: 10, greedy: true });
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
-    $("#testmask").Type("1234567890");
-
-    equal($("#testmask").val(), "1234567890", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        $("#testmask").Type("1234567890");
+        start();
+        equal($("#testmask").val(), "1234567890", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
+        $("#testmask").remove();
+    }, 0);
 });
 });
-test("inputmask({ mask: \"9\", numericInput: true, repeat: 10, greedy: true }); - replace selection", function () {
+asyncTest("inputmask({ mask: \"9\", numericInput: true, repeat: 10, greedy: true }); - replace selection", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask({ mask: "9", numericInput: true, repeat: 10, greedy: true });
     $("#testmask").inputmask({ mask: "9", numericInput: true, repeat: 10, greedy: true });
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
-    $("#testmask").Type("1234567890");
-    caret($("#testmask"), 3, 6);
-    $("#testmask").Type("5");
-
-    equal($("#testmask").val(), "__12357890", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        $("#testmask").Type("1234567890");
+        caret($("#testmask"), 3, 6);
+        $("#testmask").Type("5");
+        start();
+        equal($("#testmask").val(), "__12357890", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
+        $("#testmask").remove();
+    }, 0);
 });
 });
 
 
-test("inputmask({ mask: \"99-99-99\", numericInput: true }); - 1234567890", function () {
+asyncTest("inputmask({ mask: \"99-99-99\", numericInput: true }); - 1234567890", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask({ mask: "99-99-99", numericInput: true });
     $("#testmask").inputmask({ mask: "99-99-99", numericInput: true });
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
-    $("#testmask").Type("1234567890");
-
-    equal($("#testmask").val(), "12-34-56", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        $("#testmask").Type("1234567890");
+        start();
+        equal($("#testmask").val(), "12-34-56", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
+        $("#testmask").remove();
+    }, 0);
 });
 });
 
 
-test("inputmask({ mask: \"€ 999.999.999,99\", numericInput: true }); - 123", function () {
+asyncTest("inputmask({ mask: \"€ 999.999.999,99\", numericInput: true }); - 123", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask('€ 999.999.999,99', { numericInput: true });
     $("#testmask").inputmask('€ 999.999.999,99', { numericInput: true });
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
-    $("#testmask").Type("123");
-
-    equal($("#testmask").val(), "€ ___.___.__1,23", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        $("#testmask").Type("123");
+        start();
+        equal($("#testmask").val(), "€ ___.___.__1,23", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
+        $("#testmask").remove();
+    }, 0);
 });
 });
 
 
-test("inputmask({ mask: \"€ 999.999.999,99\", numericInput: true }); - 123 position before 456", function () {
+asyncTest("inputmask({ mask: \"€ 999.999.999,99\", numericInput: true }); - 123 position before 456", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask('€ 999.999.999,99', { numericInput: true });
     $("#testmask").inputmask('€ 999.999.999,99', { numericInput: true });
 
 
     $("#testmask")[0].focus();
     $("#testmask")[0].focus();
-    $("#testmask").Type("123");
-    caret($("#testmask"), 12);
-    $("#testmask").Type("456");
-    equal($("#testmask").val(), "€ ___.__4.561,23", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        $("#testmask").Type("123");
+        caret($("#testmask"), 12);
+        $("#testmask").Type("456");
+        start();
+        equal($("#testmask").val(), "€ ___.__4.561,23", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
+        $("#testmask").remove();
+    }, 0);
 });
 });
 
 
 asyncTest("inputmask({ mask: \"€ 999.999.999,99\", { numericInput: true, radixPoint: \",\" }); - 123 - radixpoint has no logic anymore in base", function () {
 asyncTest("inputmask({ mask: \"€ 999.999.999,99\", { numericInput: true, radixPoint: \",\" }); - 123 - radixpoint has no logic anymore in base", function () {
@@ -206,30 +227,36 @@ asyncTest("inputmask({ mask: \"€ 999.999.999,99\", { numericInput: true, radix
     }, 0);
     }, 0);
 });
 });
 
 
-test("inputmask({ mask: \"9999 t\", { numericInput: true }); - 123 - Joe Rosa", function () {
+asyncTest("inputmask({ mask: \"9999 t\", { numericInput: true }); - 123 - Joe Rosa", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask('9999 t', { numericInput: true });
     $("#testmask").inputmask('9999 t', { numericInput: true });
 
 
     $("#testmask").focus();
     $("#testmask").focus();
     $("#testmask").click();
     $("#testmask").click();
-    $("#testmask").Type("123");
-    equal($("#testmask").val(), "_123 t", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        $("#testmask").Type("123");
+        start();
+        equal($("#testmask").val(), "_123 t", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
+        $("#testmask").remove();
+    }, 0);
 });
 });
 
 
-test("inputmask({ mask: \"9999 t\", { numericInput: true, autoUnmask: true }); - 70  - Joe Rosa", function () {
+asyncTest("inputmask({ mask: \"9999 t\", { numericInput: true, autoUnmask: true }); - 70  - Joe Rosa", function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
     $("#testmask").inputmask('9999 t', { numericInput: true, autoUnmask: true });
     $("#testmask").inputmask('9999 t', { numericInput: true, autoUnmask: true });
 
 
     $("#testmask").focus();
     $("#testmask").focus();
     $("#testmask").click();
     $("#testmask").click();
-    $("#testmask").Type("70");
-    equal($("#testmask").val(), "70", "Result " + $("#testmask").val());
+    setTimeout(function () {
+        $("#testmask").Type("70");
+        start();
+        equal($("#testmask").val(), "70", "Result " + $("#testmask").val());
 
 
-    $("#testmask").remove();
+        $("#testmask").remove();
+    }, 0);
 });
 });
 
 
 asyncTest("inputmask({ mask: \"['$9.99', '$99.99', '$999.99', '$9,999.99', '$99,999.99', '$999,999.99', '$9,999,999.99', '$99,999,999.99', '$999,999,999.99'], 'placeholder': ' ', 'numericInput': true, 'rightAlignNumerics': false\" value=\"$100000.00\"", function () {
 asyncTest("inputmask({ mask: \"['$9.99', '$99.99', '$999.99', '$9,999.99', '$99,999.99', '$999,999.99', '$9,999,999.99', '$99,999,999.99', '$999,999,999.99'], 'placeholder': ' ', 'numericInput': true, 'rightAlignNumerics': false\" value=\"$100000.00\"", function () {

+ 3 - 2
qunit/tests_phone.js

@@ -3,8 +3,9 @@ module("Phone masks")
 asyncTest("inputmask(\"phone be\") - type \"473890428\"", 1, function () {
 asyncTest("inputmask(\"phone be\") - type \"473890428\"", 1, function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" />');
     $fixture.append('<input type="text" id="testmask" />');
+    
     $("#testmask").inputmask("phonebe", { "url": "https://rawgit.com/RobinHerbots/jquery.inputmask/3.x/js/phone-codes/phone-be.json" });
     $("#testmask").inputmask("phonebe", { "url": "https://rawgit.com/RobinHerbots/jquery.inputmask/3.x/js/phone-codes/phone-be.json" });
-
+    $("#testmask")[0].focus();
     $("#testmask").Type("473890428");
     $("#testmask").Type("473890428");
 
 
     setTimeout(function () {
     setTimeout(function () {
@@ -18,7 +19,7 @@ asyncTest("inputmask(\"phone be\") - value \"32473890428\"", 1, function () {
     var $fixture = $("#qunit-fixture");
     var $fixture = $("#qunit-fixture");
     $fixture.append('<input type="text" id="testmask" value="32473890428" />');
     $fixture.append('<input type="text" id="testmask" value="32473890428" />');
     $("#testmask").inputmask("phonebe", { "url": "https://rawgit.com/RobinHerbots/jquery.inputmask/3.x/js/phone-codes/phone-be.json" });
     $("#testmask").inputmask("phonebe", { "url": "https://rawgit.com/RobinHerbots/jquery.inputmask/3.x/js/phone-codes/phone-be.json" });
-
+    $("#testmask")[0].focus();
     setTimeout(function () {
     setTimeout(function () {
         equal($("#testmask").val(), "+32(473)89-04-28", "Result " + $("#testmask").val());
         equal($("#testmask").val(), "+32(473)89-04-28", "Result " + $("#testmask").val());
         start();
         start();