simulator.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. (function($) {
  2. $.caret = function(input, begin, end) {
  3. var npt = input.jquery && input.length > 0 ? input[0] : input,
  4. range;
  5. if (typeof begin == 'number') {
  6. if (!$(input).is(':visible')) {
  7. return;
  8. }
  9. end = (typeof end == 'number') ? end : begin;
  10. if (npt.setSelectionRange) {
  11. npt.selectionStart = begin;
  12. npt.selectionEnd = end;
  13. } else if (npt.createTextRange) {
  14. range = npt.createTextRange();
  15. range.collapse(true);
  16. range.moveEnd('character', end);
  17. range.moveStart('character', begin);
  18. range.select();
  19. }
  20. } else {
  21. if (!$(input).is(':visible')) {
  22. return {
  23. "begin": 0,
  24. "end": 0
  25. };
  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 {
  36. "begin": begin,
  37. "end": end
  38. };
  39. }
  40. };
  41. $.fn.SendKey = function(keyCode, modifier) {
  42. var sendDummyKeydown = false;
  43. if (Object.prototype.toString.call(keyCode) == '[object String]') {
  44. keyCode = keyCode.charCodeAt(0);
  45. sendDummyKeydown = true;
  46. }
  47. switch (keyCode) {
  48. case $.inputmask.keyCode.LEFT:
  49. {
  50. if (modifier == undefined) {
  51. var pos = $.caret(this);
  52. $.caret(this, pos.begin - 1);
  53. break;
  54. }
  55. }
  56. case $.inputmask.keyCode.RIGHT:
  57. {
  58. if (modifier == undefined) {
  59. var pos = $.caret(this);
  60. $.caret(this, pos.begin + 1);
  61. break;
  62. }
  63. }
  64. default:
  65. {
  66. var keydown = $.Event("keydown"),
  67. keypress = $.Event("keypress"),
  68. keyup = $.Event("keyup");
  69. if (!sendDummyKeydown) {
  70. keydown.keyCode = keyCode;
  71. if (modifier == $.inputmask.keyCode.CONTROL)
  72. keydown.ctrlKey = true;
  73. }
  74. $(this).trigger(keydown);
  75. if (!keydown.isDefaultPrevented()) {
  76. keypress.keyCode = keyCode;
  77. if (modifier == $.inputmask.keyCode.CONTROL)
  78. keypress.ctrlKey = true;
  79. $(this).trigger(keypress);
  80. //if (!keypress.isDefaultPrevented()) {
  81. keyup.keyCode = keyCode;
  82. if (modifier == $.inputmask.keyCode.CONTROL)
  83. keyup.ctrlKey = true;
  84. $(this).trigger(keyup);
  85. //}
  86. }
  87. }
  88. }
  89. }
  90. $.fn.Type = function(inputStr) {
  91. var $input = $(this);
  92. $.each(inputStr.split(''), function(ndx, lmnt) {
  93. $input.SendKey(lmnt);
  94. });
  95. }
  96. $.fn.paste = function(inputStr) {
  97. var input = this.jquery && this.length > 0 ? this[0] : this,
  98. $input = $(input),
  99. isRTL = input.inputmask.isRTL;
  100. window.clipboardData ? window.clipboardData.setData("Text", inputStr) : $input[0]._valueSet(isRTL ? inputStr.split('').reverse().join('') : inputStr);
  101. $input.trigger('paste');
  102. }
  103. })(jQuery);