Browse Source

inputfallback optimalization #1357

Robin Herbots 9 years ago
parent
commit
67098452e7

+ 4 - 0
CHANGELOG.md

@@ -1,6 +1,10 @@
 # Change Log
 All notable changes to this project will be documented in this file.
 
+## [UNRELEASED]
+
+
+
 ## [3.3.3 - 2016-09-09] - hotfix
 
 ### Updates

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "jquery.inputmask",
-  "version": "3.3.3",
+  "version": "3.3.4-2",
   "main": [
     "./dist/inputmask/inputmask.js"
   ],

+ 1 - 1
component.json

@@ -2,7 +2,7 @@
   "name": "jquery_inputmask",
   "repository": "robinherbots/jquery.inputmask",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
-  "version": "3.3.3",
+  "version": "3.3.4-2",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "main": "./dist/jquery.inputmask.bundle.js",
   "scripts": [

+ 1 - 1
composer.json

@@ -1,7 +1,7 @@
 {
   "name": "robinherbots/jquery.inputmask",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
-  "version": "3.3.3",
+  "version": "3.3.4-2",
   "type": "library",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "homepage": "http://robinherbots.github.io/jquery.inputmask",

+ 1 - 1
dist/inputmask/inputmask.date.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

+ 1 - 1
dist/inputmask/inputmask.dependencyLib.jquery.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery")) : factory(jQuery);

+ 1 - 1
dist/inputmask/inputmask.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

+ 33 - 28
dist/inputmask/inputmask.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery")) : factory(window.dependencyLib || jQuery);
@@ -760,7 +760,8 @@
                 }
             }), writeOut) {
                 var caretPos = void 0, lvp = getLastValidPosition();
-                document.activeElement === input && (initiatingEvent || result) && (caretPos = caret(input).begin - (stickyCaret === !0 ? 1 : 0), 
+                document.activeElement === input && (initiatingEvent || result) && (caretPos = caret(input).begin, 
+                initiatingEvent && result === !1 && (caretPos = seekNext(getLastValidPosition(caretPos))), 
                 result && stickyCaret !== !0 && (caretPos < lvp + 1 || lvp === -1) && (caretPos = opts.numericInput && void 0 === result.caret ? seekPrevious(result.forwardPosition) : result.forwardPosition)), 
                 writeBuffer(input, getBuffer(), caretPos, initiatingEvent || new $.Event("checkval"));
             }
@@ -882,33 +883,36 @@
             }
             var valueGet, valueSet;
             if (!npt.inputmask.__valueGet) {
-                if (Object.getOwnPropertyDescriptor) {
-                    "function" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = "object" == typeof "test".__proto__ ? function(object) {
-                        return object.__proto__;
-                    } : function(object) {
-                        return object.constructor.prototype;
-                    });
-                    var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), "value") : void 0;
-                    valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, 
-                    valueSet = valueProperty.set, Object.defineProperty(npt, "value", {
-                        get: getter,
-                        set: setter,
-                        configurable: !0
-                    })) : "INPUT" !== npt.tagName && (valueGet = function() {
-                        return this.textContent;
-                    }, valueSet = function(value) {
-                        this.textContent = value;
-                    }, Object.defineProperty(npt, "value", {
-                        get: getter,
-                        set: setter,
-                        configurable: !0
-                    }));
-                } else document.__lookupGetter__ && npt.__lookupGetter__("value") && (valueGet = npt.__lookupGetter__("value"), 
-                valueSet = npt.__lookupSetter__("value"), npt.__defineGetter__("value", getter), 
-                npt.__defineSetter__("value", setter));
-                npt.inputmask.__valueGet = valueGet, npt.inputmask._valueGet = function(overruleRTL) {
+                if (opts.noValuePatching !== !0) {
+                    if (Object.getOwnPropertyDescriptor) {
+                        "function" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = "object" == typeof "test".__proto__ ? function(object) {
+                            return object.__proto__;
+                        } : function(object) {
+                            return object.constructor.prototype;
+                        });
+                        var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), "value") : void 0;
+                        valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, 
+                        valueSet = valueProperty.set, Object.defineProperty(npt, "value", {
+                            get: getter,
+                            set: setter,
+                            configurable: !0
+                        })) : "INPUT" !== npt.tagName && (valueGet = function() {
+                            return this.textContent;
+                        }, valueSet = function(value) {
+                            this.textContent = value;
+                        }, Object.defineProperty(npt, "value", {
+                            get: getter,
+                            set: setter,
+                            configurable: !0
+                        }));
+                    } else document.__lookupGetter__ && npt.__lookupGetter__("value") && (valueGet = npt.__lookupGetter__("value"), 
+                    valueSet = npt.__lookupSetter__("value"), npt.__defineGetter__("value", getter), 
+                    npt.__defineSetter__("value", setter));
+                    npt.inputmask.__valueGet = valueGet, npt.inputmask.__valueSet = valueSet;
+                }
+                npt.inputmask._valueGet = function(overruleRTL) {
                     return isRTL && overruleRTL !== !0 ? valueGet.call(this.el).split("").reverse().join("") : valueGet.call(this.el);
-                }, npt.inputmask.__valueSet = valueSet, npt.inputmask._valueSet = function(value, overruleRTL) {
+                }, npt.inputmask._valueSet = function(value, overruleRTL) {
                     valueSet.call(this.el, null === value || void 0 === value ? "" : overruleRTL !== !0 && isRTL ? value.split("").reverse().join("") : value);
                 }, void 0 === valueGet && (valueGet = function() {
                     return this.value;
@@ -1358,6 +1362,7 @@
             jitMasking: !1,
             nullable: !0,
             inputEventOnly: !1,
+            noValuePatching: !1,
             positionCaretOnClick: "lvp",
             casing: null
         },

+ 1 - 1
dist/inputmask/inputmask.numeric.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

+ 1 - 1
dist/inputmask/inputmask.phone.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

+ 1 - 1
dist/inputmask/inputmask.regex.extensions.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "inputmask.dependencyLib", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("./inputmask.dependencyLib.jquery"), require("./inputmask")) : factory(window.dependencyLib || jQuery, window.Inputmask);

+ 1 - 1
dist/inputmask/jquery.inputmask.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 !function(factory) {
     "function" == typeof define && define.amd ? define([ "jquery", "inputmask" ], factory) : "object" == typeof exports ? module.exports = factory(require("jquery"), require("./inputmask")) : factory(jQuery, window.Inputmask);

+ 33 - 28
dist/jquery.inputmask.bundle.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 !function($) {
     function Inputmask(alias, options) {
@@ -758,7 +758,8 @@
                 }
             }), writeOut) {
                 var caretPos = void 0, lvp = getLastValidPosition();
-                document.activeElement === input && (initiatingEvent || result) && (caretPos = caret(input).begin - (stickyCaret === !0 ? 1 : 0), 
+                document.activeElement === input && (initiatingEvent || result) && (caretPos = caret(input).begin, 
+                initiatingEvent && result === !1 && (caretPos = seekNext(getLastValidPosition(caretPos))), 
                 result && stickyCaret !== !0 && (caretPos < lvp + 1 || lvp === -1) && (caretPos = opts.numericInput && void 0 === result.caret ? seekPrevious(result.forwardPosition) : result.forwardPosition)), 
                 writeBuffer(input, getBuffer(), caretPos, initiatingEvent || new $.Event("checkval"));
             }
@@ -880,33 +881,36 @@
             }
             var valueGet, valueSet;
             if (!npt.inputmask.__valueGet) {
-                if (Object.getOwnPropertyDescriptor) {
-                    "function" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = "object" == typeof "test".__proto__ ? function(object) {
-                        return object.__proto__;
-                    } : function(object) {
-                        return object.constructor.prototype;
-                    });
-                    var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), "value") : void 0;
-                    valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, 
-                    valueSet = valueProperty.set, Object.defineProperty(npt, "value", {
-                        get: getter,
-                        set: setter,
-                        configurable: !0
-                    })) : "INPUT" !== npt.tagName && (valueGet = function() {
-                        return this.textContent;
-                    }, valueSet = function(value) {
-                        this.textContent = value;
-                    }, Object.defineProperty(npt, "value", {
-                        get: getter,
-                        set: setter,
-                        configurable: !0
-                    }));
-                } else document.__lookupGetter__ && npt.__lookupGetter__("value") && (valueGet = npt.__lookupGetter__("value"), 
-                valueSet = npt.__lookupSetter__("value"), npt.__defineGetter__("value", getter), 
-                npt.__defineSetter__("value", setter));
-                npt.inputmask.__valueGet = valueGet, npt.inputmask._valueGet = function(overruleRTL) {
+                if (opts.noValuePatching !== !0) {
+                    if (Object.getOwnPropertyDescriptor) {
+                        "function" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = "object" == typeof "test".__proto__ ? function(object) {
+                            return object.__proto__;
+                        } : function(object) {
+                            return object.constructor.prototype;
+                        });
+                        var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), "value") : void 0;
+                        valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, 
+                        valueSet = valueProperty.set, Object.defineProperty(npt, "value", {
+                            get: getter,
+                            set: setter,
+                            configurable: !0
+                        })) : "INPUT" !== npt.tagName && (valueGet = function() {
+                            return this.textContent;
+                        }, valueSet = function(value) {
+                            this.textContent = value;
+                        }, Object.defineProperty(npt, "value", {
+                            get: getter,
+                            set: setter,
+                            configurable: !0
+                        }));
+                    } else document.__lookupGetter__ && npt.__lookupGetter__("value") && (valueGet = npt.__lookupGetter__("value"), 
+                    valueSet = npt.__lookupSetter__("value"), npt.__defineGetter__("value", getter), 
+                    npt.__defineSetter__("value", setter));
+                    npt.inputmask.__valueGet = valueGet, npt.inputmask.__valueSet = valueSet;
+                }
+                npt.inputmask._valueGet = function(overruleRTL) {
                     return isRTL && overruleRTL !== !0 ? valueGet.call(this.el).split("").reverse().join("") : valueGet.call(this.el);
-                }, npt.inputmask.__valueSet = valueSet, npt.inputmask._valueSet = function(value, overruleRTL) {
+                }, npt.inputmask._valueSet = function(value, overruleRTL) {
                     valueSet.call(this.el, null === value || void 0 === value ? "" : overruleRTL !== !0 && isRTL ? value.split("").reverse().join("") : value);
                 }, void 0 === valueGet && (valueGet = function() {
                     return this.value;
@@ -1356,6 +1360,7 @@
             jitMasking: !1,
             nullable: !0,
             inputEventOnly: !1,
+            noValuePatching: !1,
             positionCaretOnClick: "lvp",
             casing: null
         },

+ 1 - 1
dist/min/inputmask/inputmask.date.extensions.min.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 /*
  Input Mask plugin extensions

+ 1 - 1
dist/min/inputmask/inputmask.dependencyLib.jquery.min.js

@@ -3,6 +3,6 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return window.dependencyLib=a,a});

+ 1 - 1
dist/min/inputmask/inputmask.extensions.min.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 /*
  Input Mask plugin extensions

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


+ 1 - 1
dist/min/inputmask/inputmask.numeric.extensions.min.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 /*
  Input Mask plugin extensions

+ 1 - 1
dist/min/inputmask/inputmask.phone.extensions.min.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 /*
  Input Mask plugin extensions

+ 1 - 1
dist/min/inputmask/inputmask.regex.extensions.min.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 /*
  Input Mask plugin extensions

+ 1 - 1
dist/min/inputmask/jquery.inputmask.min.js

@@ -3,7 +3,7 @@
 * https://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2016 Robin Herbots
 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
-* Version: 3.3.3
+* Version: 3.3.4-2
 */
 /*
  * Input Mask plugin for jquery

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


+ 3 - 3
js/inputmask.js

@@ -1823,8 +1823,8 @@
 			if (writeOut) {
 				var caretPos = undefined, lvp = getLastValidPosition();
 				if (document.activeElement === input && (initiatingEvent || result)) {
-					if (initiatingEvent && result === false) stickyCaret = true;
-					caretPos = caret(input).begin - (stickyCaret === true ? 1 : 0);
+					caretPos = caret(input).begin;
+					if (initiatingEvent && result === false) caretPos = seekNext(getLastValidPosition(caretPos));
 					if (result && stickyCaret !== true && (caretPos < lvp + 1 || lvp === -1))
 						caretPos = (opts.numericInput && result.caret === undefined) ? seekPrevious(result.forwardPosition) : result.forwardPosition;
 				}
@@ -2468,7 +2468,7 @@
 					caret(input, inputValue.length);
 					caretPos = caret(input);
 				}
-				//detect & treat possible backspace
+				//detect & treat possible backspace before static
 				if ((getBuffer().length - inputValue.length) === 1 && inputValue.charAt(caretPos.begin) !== getBuffer()[caretPos.begin] && inputValue.charAt(caretPos.begin + 1) !== getBuffer()[caretPos.begin] && !isMask(caretPos.begin)) {
 					e.keyCode = Inputmask.keyCode.BACKSPACE;
 					keydownEvent.call(input, e);

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "jquery.inputmask",
-  "version": "3.3.3",
+  "version": "3.3.4-2",
   "description": "jquery.inputmask is a jquery plugin which create an input mask.",
   "main": "./dist/inputmask/jquery.inputmask.js",
   "files": [

+ 1 - 1
qunit/config.js

@@ -8,6 +8,6 @@ require.config({
 		//"inputmask.dependencyLib": "../extra/dependencyLibs/inputmask.dependencyLib",
 		// "inputmask.dependencyLib": "../extra/dependencyLibs/inputmask.dependencyLib.jqlite",
 		"inputmask": "../dist/inputmask/inputmask"
-		//"inputmask": "../js/inputmask"
+		// "inputmask": "../js/inputmask"
 	}
 });

+ 1 - 0
qunit/tests_inputeventonly.js

@@ -73,4 +73,5 @@ define([
 		$(testmask).input("(12) ___-____", 3);
 		assert.ok($.caret(testmask).begin == 3, "Caret " + $.caret(testmask).begin);
 	});
+
 });