tests.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. var keyCodes = {
  2. 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,
  3. 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
  4. }
  5. $.fn.SendKey = function (keyCode) {
  6. function caret(input, begin, end) {
  7. var npt = input.jquery && input.length > 0 ? input[0] : input, range;
  8. if (typeof begin == 'number') {
  9. if (!$(input).is(':visible')) {
  10. return;
  11. }
  12. end = (typeof end == 'number') ? end : begin;
  13. if (npt.setSelectionRange) {
  14. npt.selectionStart = begin;
  15. npt.selectionEnd = end;
  16. } else if (npt.createTextRange) {
  17. range = npt.createTextRange();
  18. range.collapse(true);
  19. range.moveEnd('character', end);
  20. range.moveStart('character', begin);
  21. range.select();
  22. }
  23. } else {
  24. if (!$(input).is(':visible')) {
  25. return { "begin": 0, "end": 0 };
  26. }
  27. if (npt.setSelectionRange) {
  28. begin = npt.selectionStart;
  29. end = npt.selectionEnd;
  30. } else if (document.selection && document.selection.createRange) {
  31. range = document.selection.createRange();
  32. begin = 0 - range.duplicate().moveStart('character', -100000);
  33. end = begin + range.text.length;
  34. }
  35. return { "begin": begin, "end": end };
  36. }
  37. };
  38. switch (keyCode) {
  39. case keyCodes.LEFT: {
  40. var pos = caret(this);
  41. caret(this, pos.begin - 1);
  42. break;
  43. }
  44. case keyCodes.RIGHT: {
  45. var pos = caret(this);
  46. caret(this, pos.begin + 1);
  47. break;
  48. }
  49. default: {
  50. var keydown = $.Event("keydown"),
  51. keypress = $.Event("keypress"),
  52. keyup = $.Event("keyup");
  53. keydown.keyCode = keyCode;
  54. $(this).trigger(keydown)
  55. if (!keydown.isDefaultPrevented()) {
  56. keypress.keyCode = keyCode;
  57. $(this).trigger(keypress);
  58. if (!keypress.isDefaultPrevented()) {
  59. keyup.keyCode = keyCode;
  60. $(this).trigger(keyup);
  61. }
  62. }
  63. }
  64. }
  65. }
  66. module("Simple masking");
  67. test("inputmask(\"99-99-99\", { clearMaskOnLostFocus: false}", function () {
  68. $('body').append('<input type="text" id="testmask" />');
  69. $("#testmask").inputmask("99-99-99", { clearMaskOnLostFocus: false });
  70. equal(document.getElementById("testmask").value, "__-__-__", "Result " + document.getElementById("testmask").value);
  71. $("#testmask").remove();
  72. });
  73. test("inputmask(\"99-99-99\", { clearMaskOnLostFocus: true}", function () {
  74. $('body').append('<input type="text" id="testmask" />');
  75. $("#testmask").inputmask("99-99-99", { clearMaskOnLostFocus: true });
  76. equal(document.getElementById("testmask").value, "", "Result " + document.getElementById("testmask").value);
  77. $("#testmask").remove();
  78. });
  79. test("inputmask(\"999.999.999\")", function () {
  80. $('body').append('<input type="text" id="testmask" />');
  81. $("#testmask").inputmask("999.999.999");
  82. $("#testmask")[0].focus();
  83. var event;
  84. $("#testmask").SendKey(49);
  85. $("#testmask").SendKey(50);
  86. $("#testmask").SendKey(51);
  87. equal($("#testmask").val(), "123.___.___", "Result " + $("#testmask").val());
  88. $("#testmask").remove();
  89. });
  90. asyncTest("inputmask(\"999.999.999\", { oncomplete: ... })", 1, function () {
  91. $('body').append('<input type="text" id="testmask" />');
  92. $("#testmask").inputmask("999.999.999", {
  93. oncomplete: function () {
  94. equal($("#testmask").val(), "123.456.789", "Result " + $("#testmask").val());
  95. start();
  96. $("#testmask").remove();
  97. }
  98. });
  99. $("#testmask")[0].focus();
  100. $("#testmask").SendKey(49);
  101. $("#testmask").SendKey(50);
  102. $("#testmask").SendKey(51);
  103. $("#testmask").SendKey(52);
  104. $("#testmask").SendKey(53);
  105. $("#testmask").SendKey(54);
  106. $("#testmask").SendKey(55);
  107. $("#testmask").SendKey(56);
  108. $("#testmask").SendKey(57);
  109. });
  110. asyncTest("inputmask(\"9-AAA.999\") - change event", 1, function () {
  111. $('body').append('<input type="text" id="testmask" />');
  112. $("#testmask").inputmask("9-AAA.999").change(function () {
  113. ok(true, "Change triggered");
  114. setTimeout(function () {
  115. $("#testmask").remove();
  116. start();
  117. });
  118. });
  119. $("#testmask")[0].focus();
  120. $("#testmask").SendKey(49);
  121. $("#testmask").SendKey(65);
  122. $("#testmask").SendKey(66);
  123. $("#testmask").SendKey(67);
  124. $("#testmask").SendKey(50);
  125. $("#testmask").SendKey(51);
  126. $("#testmask").blur();
  127. });
  128. asyncTest("inputmask(\"9-AAA.999\", { onincomplete: ... })", 1, function () {
  129. $('body').append('<input type="text" id="testmask" />');
  130. $("#testmask").inputmask("9-AAA.999", {
  131. onincomplete: function () {
  132. equal($("#testmask").val(), "1-ABC.12_", "Result " + $("#testmask").val());
  133. start();
  134. $("#testmask").remove();
  135. }
  136. });
  137. $("#testmask")[0].focus();
  138. $("#testmask").SendKey(49);
  139. $("#testmask").SendKey(65);
  140. $("#testmask").SendKey(66);
  141. $("#testmask").SendKey(67);
  142. $("#testmask").SendKey(49);
  143. $("#testmask").SendKey(50);
  144. $("#testmask").blur();
  145. });
  146. test("inputmask(\"999.999.999\") - delete 2nd with backspace, continue the mask", function () {
  147. $('body').append('<input type="text" id="testmask" />');
  148. $("#testmask").inputmask("999.999.999");
  149. $("#testmask")[0].focus();
  150. var event;
  151. $("#testmask").SendKey(49);
  152. $("#testmask").SendKey(50);
  153. $("#testmask").SendKey(51);
  154. $("#testmask").SendKey(keyCodes.LEFT);
  155. $("#testmask").SendKey(keyCodes.LEFT);
  156. $("#testmask").SendKey(keyCodes.BACKSPACE);
  157. $("#testmask").SendKey(52);
  158. $("#testmask").SendKey(keyCodes.RIGHT);
  159. $("#testmask").SendKey(53);
  160. $("#testmask").SendKey(54);
  161. equal($("#testmask").val(), "143.56_.___", "Result " + $("#testmask").val());
  162. $("#testmask").remove();
  163. });
  164. test("inputmask(\"999.999.999\") - delete 2nd with delete, continue the mask", function () {
  165. $('body').append('<input type="text" id="testmask" />');
  166. $("#testmask").inputmask("999.999.999");
  167. $("#testmask")[0].focus();
  168. var event;
  169. $("#testmask").SendKey(49);
  170. $("#testmask").SendKey(50);
  171. $("#testmask").SendKey(51);
  172. $("#testmask").SendKey(keyCodes.LEFT);
  173. $("#testmask").SendKey(keyCodes.LEFT);
  174. $("#testmask").SendKey(keyCodes.LEFT);
  175. $("#testmask").SendKey(keyCodes.DELETE);
  176. $("#testmask").SendKey(52);
  177. $("#testmask").SendKey(keyCodes.RIGHT);
  178. $("#testmask").SendKey(53);
  179. $("#testmask").SendKey(54);
  180. equal($("#testmask").val(), "143.56_.___", "Result " + $("#testmask").val());
  181. $("#testmask").remove();
  182. });
  183. test("RTL inputmask(\"999.999.999\") - delete 2nd with backspace, continue the mask", function () {
  184. $('body').append('<input type="text" id="testmask" dir="rtl" />');
  185. $("#testmask").inputmask("999.999.999");
  186. $("#testmask")[0].focus();
  187. var event;
  188. $("#testmask").SendKey(49);
  189. $("#testmask").SendKey(50);
  190. $("#testmask").SendKey(51);
  191. $("#testmask").SendKey(keyCodes.RIGHT);
  192. $("#testmask").SendKey(keyCodes.RIGHT);
  193. $("#testmask").SendKey(keyCodes.BACKSPACE);
  194. $("#testmask").SendKey(52);
  195. $("#testmask").SendKey(keyCodes.LEFT);
  196. $("#testmask").SendKey(53);
  197. $("#testmask").SendKey(54);
  198. equal($("#testmask").val(), "___._65.341", "Result " + $("#testmask").val());
  199. $("#testmask").remove();
  200. });
  201. test("RTL inputmask(\"999.999.999\") - delete 2nd with delete, continue the mask", function () {
  202. $('body').append('<input type="text" id="testmask" dir="rtl" />');
  203. $("#testmask").inputmask("999.999.999");
  204. $("#testmask")[0].focus();
  205. var event;
  206. $("#testmask").SendKey(49);
  207. $("#testmask").SendKey(50);
  208. $("#testmask").SendKey(51);
  209. $("#testmask").SendKey(keyCodes.RIGHT);
  210. $("#testmask").SendKey(keyCodes.DELETE);
  211. $("#testmask").SendKey(52);
  212. $("#testmask").SendKey(keyCodes.LEFT);
  213. $("#testmask").SendKey(53);
  214. $("#testmask").SendKey(54);
  215. equal($("#testmask").val(), "___._65.341", "Result " + $("#testmask").val());
  216. $("#testmask").remove();
  217. });
  218. module("Initial value setting");
  219. test("inputmask(\"999:99\", { placeholder: \"0\"}) value=\"007:20\"", function () {
  220. $('body').append('<input type="text" id="testmask" value="007:20" />');
  221. $("#testmask").inputmask("999:99", { placeholder: "0" });
  222. equal($("#testmask").val(), "007:20", "Result " + $("#testmask").val());
  223. $("#testmask").remove();
  224. });
  225. test("inputmask(\"99 999 999 999 9999 \\D\\E*** 9999\") ~ value=\"01 650 103 002 0001 DE101 5170\"", function () {
  226. $('body').append('<input type="text" id="testmask" value="01 650 103 002 0001 DE101 5170" />');
  227. $("#testmask").inputmask("99 999 999 999 9999 \\D\\E*** 9999");
  228. equal($("#testmask").val(), "01 650 103 002 0001 DE101 5170", "Result " + $("#testmask").val());
  229. $("#testmask").remove();
  230. });
  231. test("inputmask(\"99 999 999 999 9999 \\D\\E*** 9999\") ~ value=\"016501030020001DE1015170\"", function () {
  232. $('body').append('<input type="text" id="testmask" value="016501030020001DE1015170" />');
  233. $("#testmask").inputmask("99 999 999 999 9999 \\D\\E*** 9999");
  234. equal($("#testmask").val(), "01 650 103 002 0001 DE101 5170", "Result " + $("#testmask").val());
  235. $("#testmask").remove();
  236. });
  237. test("inputmask(\"\\D\\E***\") ~ value=\"DE001\"", function () {
  238. $('body').append('<input type="text" id="testmask" value="DE001" />');
  239. $("#testmask").inputmask("\\D\\E***");
  240. equal($("#testmask").val(), "DE001", "Result " + $("#testmask").val());
  241. $("#testmask").remove();
  242. });
  243. test("inputmask(\"decimal\") ~ value=\"123.45\"", function () {
  244. $('body').append('<input type="text" id="testmask" value="123.45" />');
  245. $("#testmask").inputmask("decimal");
  246. equal($("#testmask").val(), "123.45", "Result " + $("#testmask").val());
  247. $("#testmask").remove();
  248. });
  249. module("Set value with fn.val");
  250. test("inputmask(\"decimal\") ~ value=\"123.45\"", function () {
  251. $('body').append('<input type="text" id="testmask" />');
  252. $("#testmask").inputmask("decimal");
  253. $("#testmask").val("123.45");
  254. equal($("#testmask").val(), "123.45", "Result " + $("#testmask").val());
  255. $("#testmask").remove();
  256. });
  257. test("inputmask(\"+7 (999) 999-99-99\") ~ value=\"+7 (+79114041112___) ___-__-__\"", function () {
  258. $('body').append('<input type="text" id="testmask" />');
  259. $("#testmask").inputmask("+7 (999) 999-99-99");
  260. $("#testmask").val("+7 (+79114041112___) ___-__-__");
  261. equal($("#testmask").val(), "+7 (911) 404-11-12", "Result " + $("#testmask").val());
  262. $("#testmask").remove();
  263. });