浏览代码

fix undo (ctrl-z)

Robin Herbots 12 年之前
父节点
当前提交
31bf66a247

+ 1 - 1
build.properties

@@ -7,7 +7,7 @@ distdir = dist
 
 
 build.major = 2
 build.major = 2
 build.minor = 3
 build.minor = 3
-build.revision = 68
+build.revision = 69
 
 
 target = jquery.inputmask.bundle.js
 target = jquery.inputmask.bundle.js
 target.min = jquery.inputmask.bundle.min.js
 target.min = jquery.inputmask.bundle.min.js

+ 1 - 1
component.json

@@ -1,6 +1,6 @@
 {
 {
     "name": "jquery.inputmask",
     "name": "jquery.inputmask",
-    "version": "2.3.68",
+    "version": "2.3.69",
     "main": "./dist/jquery.inputmask.bundle.js",
     "main": "./dist/jquery.inputmask.bundle.js",
     "dependencies": {
     "dependencies": {
         "jquery": ">=1.7"
         "jquery": ">=1.7"

二进制
dist/jQuery.InputMask.2.3.68.nupkg


二进制
dist/jQuery.InputMask.2.3.69.nupkg


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

@@ -3,7 +3,7 @@
 * http://github.com/RobinHerbots/jquery.inputmask
 * http://github.com/RobinHerbots/jquery.inputmask
 * Copyright (c) 2010 - 2013 Robin Herbots
 * Copyright (c) 2010 - 2013 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: 2.3.68
+* Version: 2.3.69
 */
 */
 
 
 (function ($) {
 (function ($) {
@@ -247,7 +247,7 @@
                 var escaped = false, outCount = 0, greedy = opts.greedy, repeat = opts.repeat;
                 var escaped = false, outCount = 0, greedy = opts.greedy, repeat = opts.repeat;
                 if (repeat == "*") greedy = false;
                 if (repeat == "*") greedy = false;
                 //if (greedy == true && opts.placeholder == "") opts.placeholder = " ";
                 //if (greedy == true && opts.placeholder == "") opts.placeholder = " ";
-                if (mask.length == 1 && greedy == false) { opts.placeholder = ""; } //hide placeholder with single non-greedy mask
+                if (mask.length == 1 && greedy == false && repeat != 0) { opts.placeholder = ""; } //hide placeholder with single non-greedy mask
                 var singleMask = $.map(mask.split(""), function (element, index) {
                 var singleMask = $.map(mask.split(""), function (element, index) {
                     var outElem = [];
                     var outElem = [];
                     if (element == opts.escapeChar) {
                     if (element == opts.escapeChar) {
@@ -1411,8 +1411,9 @@
                         var input = this, $input = $(input), k = e.keyCode, pos = caret(input);
                         var input = this, $input = $(input), k = e.keyCode, pos = caret(input);
 
 
                         //backspace, delete, and escape get special treatment
                         //backspace, delete, and escape get special treatment
-                        if (k == opts.keyCode.BACKSPACE || k == opts.keyCode.DELETE || (iphone && k == 127) || (e.ctrlKey && k == 88)) { //backspace/delete
+                        if (k == opts.keyCode.BACKSPACE || k == opts.keyCode.DELETE || (iphone && k == 127) || e.ctrlKey && k == 88) { //backspace/delete
                             e.preventDefault(); //stop default action but allow propagation
                             e.preventDefault(); //stop default action but allow propagation
+                            if (k == 88) valueOnFocus = getActiveBuffer().join('');
                             HandleRemove(input, k, pos);
                             HandleRemove(input, k, pos);
                             determineActiveMasksetIndex();
                             determineActiveMasksetIndex();
                             writeBuffer(input, getActiveBuffer(), getActiveMaskSet()["p"]);
                             writeBuffer(input, getActiveBuffer(), getActiveMaskSet()["p"]);
@@ -1422,7 +1423,8 @@
                             if (opts.showTooltip) { //update tooltip
                             if (opts.showTooltip) { //update tooltip
                                 $input.prop("title", getActiveMaskSet()["mask"]);
                                 $input.prop("title", getActiveMaskSet()["mask"]);
                             }
                             }
-                        } else if (k == opts.keyCode.END || k == opts.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch
+                        }
+                        else if (k == opts.keyCode.END || k == opts.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch
                             setTimeout(function () {
                             setTimeout(function () {
                                 var caretPos = seekNext(getActiveMaskSet()["lastValidPosition"]);
                                 var caretPos = seekNext(getActiveMaskSet()["lastValidPosition"]);
                                 if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--;
                                 if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--;
@@ -1430,8 +1432,8 @@
                             }, 0);
                             }, 0);
                         } else if ((k == opts.keyCode.HOME && !e.shiftKey) || k == opts.keyCode.PAGE_UP) { //Home or page_up
                         } else if ((k == opts.keyCode.HOME && !e.shiftKey) || k == opts.keyCode.PAGE_UP) { //Home or page_up
                             caret(input, 0, e.shiftKey ? pos.begin : 0);
                             caret(input, 0, e.shiftKey ? pos.begin : 0);
-                        } else if (k == opts.keyCode.ESCAPE) { //escape
-                            checkVal(input, true, true, valueOnFocus);
+                        } else if (k == opts.keyCode.ESCAPE || (k == 90 && e.ctrlKey)) { //escape && undo
+                            checkVal(input, true, false, valueOnFocus);
                             $input.click();
                             $input.click();
                         } else if (k == opts.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) { //insert
                         } else if (k == opts.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) { //insert
                             opts.insertMode = !opts.insertMode;
                             opts.insertMode = !opts.insertMode;
@@ -1490,7 +1492,7 @@
                                     $.each(masksets, function (ndx, lmnt) { //init undobuffer for recovery when not valid
                                     $.each(masksets, function (ndx, lmnt) { //init undobuffer for recovery when not valid
                                         if (typeof (lmnt) == "object") {
                                         if (typeof (lmnt) == "object") {
                                             activeMasksetIndex = ndx;
                                             activeMasksetIndex = ndx;
-                                            getActiveMaskSet()["undoBuffer"] = getActiveBuffer().join(''); 
+                                            getActiveMaskSet()["undoBuffer"] = getActiveBuffer().join('');
                                         }
                                         }
                                     });
                                     });
                                     HandleRemove(input, opts.keyCode.DELETE, pos);
                                     HandleRemove(input, opts.keyCode.DELETE, pos);
@@ -1641,7 +1643,7 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2013 Robin Herbots
 Copyright (c) 2010 - 2013 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: 2.3.68
+Version: 2.3.69
 
 
 Optional extensions on the jquery.inputmask base
 Optional extensions on the jquery.inputmask base
 */
 */
@@ -1763,7 +1765,7 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2012 Robin Herbots
 Copyright (c) 2010 - 2012 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: 2.3.68
+Version: 2.3.69
 
 
 Optional extensions on the jquery.inputmask base
 Optional extensions on the jquery.inputmask base
 */
 */
@@ -2247,7 +2249,7 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2013 Robin Herbots
 Copyright (c) 2010 - 2013 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: 2.3.68
+Version: 2.3.69
 
 
 Optional extensions on the jquery.inputmask base
 Optional extensions on the jquery.inputmask base
 */
 */
@@ -2424,7 +2426,7 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2013 Robin Herbots
 Copyright (c) 2010 - 2013 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: 2.3.68
+Version: 2.3.69
 
 
 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
@@ -2594,7 +2596,7 @@ Input Mask plugin extensions
 http://github.com/RobinHerbots/jquery.inputmask
 http://github.com/RobinHerbots/jquery.inputmask
 Copyright (c) 2010 - 2013 Robin Herbots
 Copyright (c) 2010 - 2013 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: 2.3.68
+Version: 2.3.69
 
 
 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

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


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


+ 1 - 1
jquery.inputmask.jquery.json

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

+ 8 - 6
js/jquery.inputmask.js

@@ -247,7 +247,7 @@
                 var escaped = false, outCount = 0, greedy = opts.greedy, repeat = opts.repeat;
                 var escaped = false, outCount = 0, greedy = opts.greedy, repeat = opts.repeat;
                 if (repeat == "*") greedy = false;
                 if (repeat == "*") greedy = false;
                 //if (greedy == true && opts.placeholder == "") opts.placeholder = " ";
                 //if (greedy == true && opts.placeholder == "") opts.placeholder = " ";
-                if (mask.length == 1 && greedy == false) { opts.placeholder = ""; } //hide placeholder with single non-greedy mask
+                if (mask.length == 1 && greedy == false && repeat != 0) { opts.placeholder = ""; } //hide placeholder with single non-greedy mask
                 var singleMask = $.map(mask.split(""), function (element, index) {
                 var singleMask = $.map(mask.split(""), function (element, index) {
                     var outElem = [];
                     var outElem = [];
                     if (element == opts.escapeChar) {
                     if (element == opts.escapeChar) {
@@ -1411,8 +1411,9 @@
                         var input = this, $input = $(input), k = e.keyCode, pos = caret(input);
                         var input = this, $input = $(input), k = e.keyCode, pos = caret(input);
 
 
                         //backspace, delete, and escape get special treatment
                         //backspace, delete, and escape get special treatment
-                        if (k == opts.keyCode.BACKSPACE || k == opts.keyCode.DELETE || (iphone && k == 127) || (e.ctrlKey && k == 88)) { //backspace/delete
+                        if (k == opts.keyCode.BACKSPACE || k == opts.keyCode.DELETE || (iphone && k == 127) || e.ctrlKey && k == 88) { //backspace/delete
                             e.preventDefault(); //stop default action but allow propagation
                             e.preventDefault(); //stop default action but allow propagation
+                            if (k == 88) valueOnFocus = getActiveBuffer().join('');
                             HandleRemove(input, k, pos);
                             HandleRemove(input, k, pos);
                             determineActiveMasksetIndex();
                             determineActiveMasksetIndex();
                             writeBuffer(input, getActiveBuffer(), getActiveMaskSet()["p"]);
                             writeBuffer(input, getActiveBuffer(), getActiveMaskSet()["p"]);
@@ -1422,7 +1423,8 @@
                             if (opts.showTooltip) { //update tooltip
                             if (opts.showTooltip) { //update tooltip
                                 $input.prop("title", getActiveMaskSet()["mask"]);
                                 $input.prop("title", getActiveMaskSet()["mask"]);
                             }
                             }
-                        } else if (k == opts.keyCode.END || k == opts.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch
+                        }
+                        else if (k == opts.keyCode.END || k == opts.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch
                             setTimeout(function () {
                             setTimeout(function () {
                                 var caretPos = seekNext(getActiveMaskSet()["lastValidPosition"]);
                                 var caretPos = seekNext(getActiveMaskSet()["lastValidPosition"]);
                                 if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--;
                                 if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--;
@@ -1430,8 +1432,8 @@
                             }, 0);
                             }, 0);
                         } else if ((k == opts.keyCode.HOME && !e.shiftKey) || k == opts.keyCode.PAGE_UP) { //Home or page_up
                         } else if ((k == opts.keyCode.HOME && !e.shiftKey) || k == opts.keyCode.PAGE_UP) { //Home or page_up
                             caret(input, 0, e.shiftKey ? pos.begin : 0);
                             caret(input, 0, e.shiftKey ? pos.begin : 0);
-                        } else if (k == opts.keyCode.ESCAPE) { //escape
-                            checkVal(input, true, true, valueOnFocus);
+                        } else if (k == opts.keyCode.ESCAPE || (k == 90 && e.ctrlKey)) { //escape && undo
+                            checkVal(input, true, false, valueOnFocus);
                             $input.click();
                             $input.click();
                         } else if (k == opts.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) { //insert
                         } else if (k == opts.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) { //insert
                             opts.insertMode = !opts.insertMode;
                             opts.insertMode = !opts.insertMode;
@@ -1490,7 +1492,7 @@
                                     $.each(masksets, function (ndx, lmnt) { //init undobuffer for recovery when not valid
                                     $.each(masksets, function (ndx, lmnt) { //init undobuffer for recovery when not valid
                                         if (typeof (lmnt) == "object") {
                                         if (typeof (lmnt) == "object") {
                                             activeMasksetIndex = ndx;
                                             activeMasksetIndex = ndx;
-                                            getActiveMaskSet()["undoBuffer"] = getActiveBuffer().join(''); 
+                                            getActiveMaskSet()["undoBuffer"] = getActiveBuffer().join('');
                                         }
                                         }
                                     });
                                     });
                                     HandleRemove(input, opts.keyCode.DELETE, pos);
                                     HandleRemove(input, opts.keyCode.DELETE, pos);