simulator.js 5.1 KB

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