From 93dfcaa3b147a49fa34bfa0dfd819d886a9be273 Mon Sep 17 00:00:00 2001 From: Style87 Date: Fri, 26 Sep 2014 14:06:19 -0700 Subject: [PATCH 1/3] Update jquery.maskedinput.js Added optional multi-character placeholder. Single character placeholders are applied to the applicable character positions. --- src/jquery.maskedinput.js | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/jquery.maskedinput.js b/src/jquery.maskedinput.js index ad999e3..a69a1c2 100644 --- a/src/jquery.maskedinput.js +++ b/src/jquery.maskedinput.js @@ -81,6 +81,23 @@ $.fn.extend({ completed: null }, settings); + // If placeholder is a single character set it for all applicable positions. + if (settings.placeholder.length == 1) { + var p = settings.placeholder; + settings.placeholder = ''; + for (var i = 0, len = mask.length; i < len; i++) { + switch(mask[i]) { + case 'a': + case '9': + case '*': + case '~': + settings.placeholder += p; + break; + default: + settings.placeholder += mask[i]; + } + } + } defs = $.mask.definitions; tests = []; @@ -107,7 +124,7 @@ $.fn.extend({ mask.split(""), function(c, i) { if (c != '?') { - return defs[c] ? settings.placeholder : c; + return defs[c] ? settings.placeholder[i] : c; } }), defaultBuffer = buffer.join(''), @@ -135,7 +152,7 @@ $.fn.extend({ if (tests[i]) { if (j < len && tests[i].test(buffer[j])) { buffer[i] = buffer[j]; - buffer[j] = settings.placeholder; + buffer[j] = settings.placeholder[i]; } else { break; } @@ -153,11 +170,11 @@ $.fn.extend({ j, t; - for (i = pos, c = settings.placeholder; i < len; i++) { + for (i = pos; i < len; i++) { if (tests[i]) { j = seekNext(i); t = buffer[i]; - buffer[i] = c; + buffer[i] = settings.placeholder[i]; if (j < len && tests[j].test(t)) { c = t; } else { @@ -269,7 +286,7 @@ $.fn.extend({ var i; for (i = start; i < end && i < len; i++) { if (tests[i]) { - buffer[i] = settings.placeholder; + buffer[i] = settings.placeholder[i]; } } } @@ -286,7 +303,7 @@ $.fn.extend({ for (i = 0, pos = 0; i < len; i++) { if (tests[i]) { - buffer[i] = settings.placeholder; + buffer[i] = settings.placeholder[i]; while (pos++ < test.length) { c = test.charAt(pos - 1); if (tests[i].test(c)) { @@ -325,7 +342,7 @@ $.fn.extend({ input.data($.mask.dataName,function(){ return $.map(buffer, function(c, i) { - return tests[i]&&c!=settings.placeholder ? c : null; + return tests[i]&&c!=settings.placeholder[i] ? c : null; }).join(''); }); From c49de0178997074ed0206db792660a1fc00950dc Mon Sep 17 00:00:00 2001 From: Style87 Date: Fri, 26 Sep 2014 15:00:58 -0700 Subject: [PATCH 2/3] Update jquery.maskedinput.js Correct bug when shifting left. --- src/jquery.maskedinput.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jquery.maskedinput.js b/src/jquery.maskedinput.js index a69a1c2..b699d5b 100644 --- a/src/jquery.maskedinput.js +++ b/src/jquery.maskedinput.js @@ -152,7 +152,7 @@ $.fn.extend({ if (tests[i]) { if (j < len && tests[i].test(buffer[j])) { buffer[i] = buffer[j]; - buffer[j] = settings.placeholder[i]; + buffer[j] = settings.placeholder[j]; } else { break; } From d90c599b0f2042bb0db376d622f6ce1453392300 Mon Sep 17 00:00:00 2001 From: Style87 Date: Fri, 26 Sep 2014 15:04:52 -0700 Subject: [PATCH 3/3] Update jquery.maskedinput.js Added optional shift right/left settings to toggle the shifting of characters on edits before the last character entered. --- src/jquery.maskedinput.js | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/jquery.maskedinput.js b/src/jquery.maskedinput.js index b699d5b..ac0bf1f 100644 --- a/src/jquery.maskedinput.js +++ b/src/jquery.maskedinput.js @@ -23,7 +23,9 @@ $.mask = { }, autoclear: true, dataName: "rawMaskFn", - placeholder: '_' + placeholder: '_', + shiftLeft: true, + shiftRight: true }; $.fn.extend({ @@ -78,6 +80,8 @@ $.fn.extend({ settings = $.extend({ autoclear: $.mask.autoclear, placeholder: $.mask.placeholder, // Load default placeholder + shiftLeft: $.mask.shiftLeft, + shiftRight: $.mask.shiftRight, completed: null }, settings); @@ -148,16 +152,18 @@ $.fn.extend({ return; } - for (i = begin, j = seekNext(end); i < len; i++) { - if (tests[i]) { - if (j < len && tests[i].test(buffer[j])) { - buffer[i] = buffer[j]; - buffer[j] = settings.placeholder[j]; - } else { - break; + if ( settings.shiftLeft ) { + for (i = begin, j = seekNext(end); i < len; i++) { + if (tests[i]) { + if (j < len && tests[i].test(buffer[j])) { + buffer[i] = buffer[j]; + buffer[j] = settings.placeholder[j]; + } else { + break; + } + + j = seekNext(j); } - - j = seekNext(j); } } writeBuffer(); @@ -165,6 +171,7 @@ $.fn.extend({ } function shiftR(pos) { + if (!settings.shiftRight) return; var i, c, j,