maxkoshel
2/18/2016 - 4:42 PM

Get/set cursor position in input.

Get/set cursor position in input.

{

      /**
       * Возвращает позицию курсора в поле ввода
       * @return {Number}
       */
      getCursorPos : function() {
          var input = this.elem('input')[0],
              r, re, rc,
              pos;

          if (input.selectionStart) {
              pos = input.selectionStart;
          } else if (document.selection) {
              input.focus();

              r = document.selection.createRange();
              if (r === null || typeof r === 'undefined') {
                  pos = 0;
              } else {
                  re = input.createTextRange();
                  rc = re.duplicate();
                  re.moveToBookmark(r.getBookmark());
                  rc.setEndPoint('EndToStart', re);

                  pos = rc.text.length;
              }
          } else {
              pos = 0;
          }

          return pos;
      },

      /**
       * Выставляет курсор в поле ввода в нужное положение
       * @param {Number} pos
       */
      setCursorPos : function(pos) {
          var input = this.elem('input')[0],
              re;

          if (input.createTextRange) {
              re = input.createTextRange();
              re.collapse(true);
              re.moveEnd('character', pos);
              re.moveStart('character', pos);
              re.select();
          } else if (input.setSelectionRange) {
              input.setSelectionRange(pos, pos);
          }
      }

  }