simulator.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. (function (factory) {
  2. if (typeof define === "function" && define.amd) {
  3. define(["../dist/inputmask/dependencyLibs/inputmask.dependencyLib",
  4. "../dist/inputmask/inputmask"], factory);
  5. } else {
  6. factory(window.dependencyLib || jQuery, window.Inputmask);
  7. }
  8. }
  9. (function ($, Inputmask) {
  10. $.caret = function (input, begin, end) {
  11. input = input.nodeName ? input : input[0];
  12. var range;
  13. if (typeof begin === "number") {
  14. end = (typeof end == "number") ? end : begin;
  15. // if (!$(input).is(":visible")) {
  16. // return;
  17. // }
  18. if (input.setSelectionRange) {
  19. input.selectionStart = begin;
  20. input.selectionEnd = end;
  21. } else if (window.getSelection) {
  22. range = document.createRange();
  23. if (input.firstChild === undefined) {
  24. var textNode = document.createTextNode("");
  25. input.appendChild(textNode);
  26. }
  27. range.setStart(input.firstChild, begin < input.value.length ? begin : input.value.length);
  28. range.setEnd(input.firstChild, end < input.value.length ? end : input.value.length);
  29. range.collapse(true);
  30. var sel = window.getSelection();
  31. sel.removeAllRanges();
  32. sel.addRange(range);
  33. //input.focus();
  34. } else if (input.createTextRange) {
  35. range = input.createTextRange();
  36. range.collapse(true);
  37. range.moveEnd("character", end);
  38. range.moveStart("character", begin);
  39. range.select();
  40. }
  41. } else {
  42. if (input.setSelectionRange) {
  43. begin = input.selectionStart;
  44. end = input.selectionEnd;
  45. } else if (window.getSelection) {
  46. range = window.getSelection().getRangeAt(0);
  47. if (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) {
  48. begin = range.startOffset;
  49. end = range.endOffset;
  50. }
  51. } else if (document.selection && document.selection.createRange) {
  52. range = document.selection.createRange();
  53. begin = 0 - range.duplicate().moveStart("character", -100000);
  54. end = begin + range.text.length;
  55. }
  56. /*eslint-disable consistent-return */
  57. return {
  58. "begin": begin,
  59. "end": end
  60. };
  61. /*eslint-enable consistent-return */
  62. }
  63. };
  64. $.fn = $.fn || $.prototype;
  65. $.fn.SendKey = function (keyCode, modifier) {
  66. function trigger(elem, evnt) {
  67. elem.focus();
  68. if ($ === jQuery) {
  69. $(elem).trigger(evnt);
  70. } else {
  71. if (document.createEvent) {
  72. elem.dispatchEvent(evnt);
  73. } else {
  74. elem.fireEvent("on" + evnt.eventType, evnt);
  75. }
  76. }
  77. }
  78. var sendDummyKeydown = false;
  79. if (Object.prototype.toString.call(keyCode) == '[object String]') {
  80. keyCode = keyCode.charCodeAt(0);
  81. sendDummyKeydown = true;
  82. }
  83. switch (keyCode) {
  84. case Inputmask.keyCode.LEFT: {
  85. if (modifier == undefined) {
  86. var pos = $.caret(this);
  87. $.caret(this, pos.begin - 1);
  88. break;
  89. }
  90. }
  91. case Inputmask.keyCode.RIGHT: {
  92. if (modifier == undefined) {
  93. var pos = $.caret(this);
  94. $.caret(this, pos.begin + 1);
  95. break;
  96. }
  97. }
  98. default: {
  99. var keydown = new $.Event("keydown"),
  100. keypress = new $.Event("keypress"),
  101. keyup = new $.Event("keyup");
  102. if (!sendDummyKeydown) {
  103. keydown.keyCode = keyCode;
  104. if (modifier == Inputmask.keyCode.CONTROL)
  105. keydown.ctrlKey = true;
  106. }
  107. trigger(this.nodeName ? this : this[0], keydown);
  108. if (!keydown.defaultPrevented) {
  109. keypress.keyCode = keyCode;
  110. if (modifier == Inputmask.keyCode.CONTROL)
  111. keypress.ctrlKey = true;
  112. trigger(this.nodeName ? this : this[0], keypress);
  113. //if (!keypress.isDefaultPrevented()) {
  114. keyup.keyCode = keyCode;
  115. if (modifier == Inputmask.keyCode.CONTROL)
  116. keyup.ctrlKey = true;
  117. trigger(this.nodeName ? this : this[0], keyup);
  118. //}
  119. }
  120. }
  121. }
  122. }
  123. if (!('append' in $.fn)) {
  124. $.fn.append = function (child) {
  125. var input = this.nodeName ? this : this[0];
  126. input.insertAdjacentHTML('beforeend', child);
  127. };
  128. }
  129. if (!('remove' in $.fn)) {
  130. $.fn.remove = function () {
  131. var input = this.nodeName ? this : this[0];
  132. if (input !== undefined && input !== null) {
  133. input.parentElement.removeChild(input);
  134. input = undefined;
  135. }
  136. };
  137. }
  138. if (!('val' in $.fn)) {
  139. $.fn.val = function (value) {
  140. var input = this.nodeName ? this : this[0];
  141. if (value !== undefined) {
  142. if (input.inputmask) {
  143. input.inputmask._valueSet(value, true);
  144. $(input).trigger("setvalue");
  145. } else input.value = value;
  146. }
  147. return input.value;
  148. };
  149. }
  150. $.fn.Type = function (inputStr) {
  151. var input = this.nodeName ? this : this[0],
  152. $input = $(input);
  153. $.each(inputStr.split(''), function (ndx, lmnt) {
  154. $input.SendKey(lmnt);
  155. });
  156. }
  157. $.fn.paste = function (inputStr) {
  158. var input = this.nodeName ? this : this[0],
  159. $input = $(input);
  160. if (window.clipboardData) {
  161. window.clipboardData.setData('Text', inputStr);
  162. } else {
  163. $.data($input, "clipboard", inputStr);
  164. window.clipboardData = {
  165. getData: function () {
  166. window.clipboardData = undefined;
  167. return $.data($input, "clipboard");
  168. }
  169. }
  170. }
  171. $input.trigger('paste');
  172. }
  173. $.fn.input = function (inputStr, caretBegin, caretEnd) {
  174. var input = this.nodeName ? this : this[0];
  175. input.inputmask.__valueSet.call(input, inputStr);
  176. if (caretBegin !== undefined)
  177. $.caret(input, caretBegin, caretEnd);
  178. $(input).trigger("input");
  179. }
  180. }));