|
|
@@ -2,7 +2,39 @@ var keyCodes = {
|
|
|
ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108,
|
|
|
NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91
|
|
|
}
|
|
|
-
|
|
|
+function caret(input, begin, end) {
|
|
|
+ var npt = input.jquery && input.length > 0 ? input[0] : input, range;
|
|
|
+ if (typeof begin == 'number') {
|
|
|
+ if (!$(input).is(':visible')) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ end = (typeof end == 'number') ? end : begin;
|
|
|
+ if (npt.setSelectionRange) {
|
|
|
+ npt.selectionStart = begin;
|
|
|
+ npt.selectionEnd = end;
|
|
|
+
|
|
|
+ } else if (npt.createTextRange) {
|
|
|
+ range = npt.createTextRange();
|
|
|
+ range.collapse(true);
|
|
|
+ range.moveEnd('character', end);
|
|
|
+ range.moveStart('character', begin);
|
|
|
+ range.select();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (!$(input).is(':visible')) {
|
|
|
+ return { "begin": 0, "end": 0 };
|
|
|
+ }
|
|
|
+ if (npt.setSelectionRange) {
|
|
|
+ begin = npt.selectionStart;
|
|
|
+ end = npt.selectionEnd;
|
|
|
+ } else if (document.selection && document.selection.createRange) {
|
|
|
+ range = document.selection.createRange();
|
|
|
+ begin = 0 - range.duplicate().moveStart('character', -100000);
|
|
|
+ end = begin + range.text.length;
|
|
|
+ }
|
|
|
+ return { "begin": begin, "end": end };
|
|
|
+ }
|
|
|
+};
|
|
|
$.fn.SendKey = function (keyCode, modifier) {
|
|
|
var sendDummyKeydown = false;
|
|
|
if (Object.prototype.toString.call(keyCode) == '[object String]') {
|
|
|
@@ -10,40 +42,6 @@ $.fn.SendKey = function (keyCode, modifier) {
|
|
|
sendDummyKeydown = true;
|
|
|
}
|
|
|
|
|
|
- function caret(input, begin, end) {
|
|
|
- var npt = input.jquery && input.length > 0 ? input[0] : input, range;
|
|
|
- if (typeof begin == 'number') {
|
|
|
- if (!$(input).is(':visible')) {
|
|
|
- return;
|
|
|
- }
|
|
|
- end = (typeof end == 'number') ? end : begin;
|
|
|
- if (npt.setSelectionRange) {
|
|
|
- npt.selectionStart = begin;
|
|
|
- npt.selectionEnd = end;
|
|
|
-
|
|
|
- } else if (npt.createTextRange) {
|
|
|
- range = npt.createTextRange();
|
|
|
- range.collapse(true);
|
|
|
- range.moveEnd('character', end);
|
|
|
- range.moveStart('character', begin);
|
|
|
- range.select();
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (!$(input).is(':visible')) {
|
|
|
- return { "begin": 0, "end": 0 };
|
|
|
- }
|
|
|
- if (npt.setSelectionRange) {
|
|
|
- begin = npt.selectionStart;
|
|
|
- end = npt.selectionEnd;
|
|
|
- } else if (document.selection && document.selection.createRange) {
|
|
|
- range = document.selection.createRange();
|
|
|
- begin = 0 - range.duplicate().moveStart('character', -100000);
|
|
|
- end = begin + range.text.length;
|
|
|
- }
|
|
|
- return { "begin": begin, "end": end };
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
switch (keyCode) {
|
|
|
case keyCodes.LEFT: {
|
|
|
if (modifier == undefined) {
|
|
|
@@ -253,6 +251,33 @@ test("inputmask(\"*****\")", function () {
|
|
|
$("#testmask").remove();
|
|
|
});
|
|
|
|
|
|
+module("Non-greedy masks");
|
|
|
+test("inputmask(\"*\", { greedy: false, repeat: \"*\" }) - replace cd with 1", function () {
|
|
|
+ $('body').append('<input type="text" id="testmask" />');
|
|
|
+ $("#testmask").inputmask("*", { greedy: false, repeat: "*" });
|
|
|
+
|
|
|
+ $("#testmask")[0].focus();
|
|
|
+
|
|
|
+ $("#testmask").Type("abcdef");
|
|
|
+ caret($("#testmask"), 2, 4);
|
|
|
+ $("#testmask").SendKey("1");
|
|
|
+ equal($("#testmask").val(), "ab1ef", "Result " + $("#testmask").val());
|
|
|
+
|
|
|
+ $("#testmask").remove();
|
|
|
+});
|
|
|
+
|
|
|
+test("inputmask(\"*\", { greedy: false, repeat: \"*\" }) - type abcdef", function () {
|
|
|
+ $('body').append('<input type="text" id="testmask" />');
|
|
|
+ $("#testmask").inputmask("*", { greedy: false, repeat: "*" });
|
|
|
+
|
|
|
+ $("#testmask")[0].focus();
|
|
|
+
|
|
|
+ $("#testmask").Type("abcdef");
|
|
|
+
|
|
|
+ equal($("#testmask").val(), "abcdef", "Result " + $("#testmask").val());
|
|
|
+
|
|
|
+ $("#testmask").remove();
|
|
|
+});
|
|
|
|
|
|
module("Initial value setting");
|
|
|
|
|
|
@@ -800,6 +825,60 @@ test("inputmask(\"decimal, { repeat: 5 }\") - maxlength 10", function () {
|
|
|
$("#testmask").remove();
|
|
|
});
|
|
|
|
|
|
+test("inputmask(\"decimal\")", function () {
|
|
|
+ $('body').append('<input type="text" id="testmask" />');
|
|
|
+ $("#testmask").inputmask("decimal");
|
|
|
+
|
|
|
+ $("#testmask")[0].focus();
|
|
|
+
|
|
|
+ $("#testmask").Type("1234567890");
|
|
|
+ caret($("#testmask"), 0, 10);
|
|
|
+ $("#testmask").Type("12345");
|
|
|
+
|
|
|
+ equal($("#testmask").val(), "12345", "Result " + $("#testmask").val());
|
|
|
+ $("#testmask").remove();
|
|
|
+});
|
|
|
+
|
|
|
+test("inputmask(\"decimal\") - value=\"1234567890\"", function () {
|
|
|
+ $('body').append('<input type="text" id="testmask" value="1234567890" />');
|
|
|
+ $("#testmask").inputmask("decimal");
|
|
|
+
|
|
|
+ $("#testmask")[0].focus();
|
|
|
+
|
|
|
+ caret($("#testmask"), 0, 10);
|
|
|
+ $("#testmask").Type("12345");
|
|
|
+
|
|
|
+ equal($("#testmask").val(), "12345", "Result " + $("#testmask").val());
|
|
|
+ $("#testmask").remove();
|
|
|
+});
|
|
|
+
|
|
|
+test("inputmask(\"decimal\")", function () {
|
|
|
+ $('body').append('<input type="text" id="testmask" />');
|
|
|
+ $("#testmask").inputmask("decimal");
|
|
|
+
|
|
|
+ $("#testmask")[0].focus();
|
|
|
+
|
|
|
+ $("#testmask").Type("1234567890");
|
|
|
+ caret($("#testmask"), 3, 5);
|
|
|
+ $("#testmask").SendKey("0");
|
|
|
+
|
|
|
+ equal($("#testmask").val(), "123067890", "Result " + $("#testmask").val());
|
|
|
+ $("#testmask").remove();
|
|
|
+});
|
|
|
+
|
|
|
+test("inputmask(\"decimal\") - value=\"1234567890\"", function () {
|
|
|
+ $('body').append('<input type="text" id="testmask" value="1234567890" />');
|
|
|
+ $("#testmask").inputmask("decimal");
|
|
|
+
|
|
|
+ $("#testmask")[0].focus();
|
|
|
+
|
|
|
+ caret($("#testmask"), 3, 5);
|
|
|
+ $("#testmask").SendKey("0");
|
|
|
+
|
|
|
+ equal($("#testmask").val(), "123067890", "Result " + $("#testmask").val());
|
|
|
+ $("#testmask").remove();
|
|
|
+});
|
|
|
+
|
|
|
module("Direction RTL");
|
|
|
test("inputmask(\"999.999.999\") - delete 2nd with backspace, continue the mask", function () {
|
|
|
$('body').append('<input type="text" id="testmask" dir="rtl" />');
|