ng-paste и onpaste, как сохранить / получить существующий текст при вставке нового текста

Я использую ng-paste а также onpaste как это,

<input type="text" class="form-control" ng-trim="false" ng-model="x.value" select-on-click ng-paste="paste($event, x)" onpaste="return false;" id="input{{$index}}" 

input имеет текст some<CURSOR>data (где <CURSOR> представляет позицию курсора)

Когда я нажимаю Cmd + V, вызывается событие вставки,

$scope.paste = function(event, data) {
      console.log('paste event', event);
}

Это работает, но я могу получить только вставленный текст, что я хочу это some<PASTED DATA>data, есть идеи?

PS мне пришлось использовать onpaste="return false;"иначе текст станет <PASTED DATA><PASTED DATA>

1 ответ

Вы можете использовать свойства selectionStart/selectionEnd элемента input, чтобы сделать трюк.

   function onPaste(event) {
            var input = event.target;
            var start = input.selectionStart;
            var end = input.selectionEnd;
            var originString = input.value;
            var myContent = "<PASTED DATA>";
            input.value = originString.substring(0, start) + myContent + originString.substring(end, originString.length);
            event.preventDefault();
            var currentPosition = (originString.substring(0, start) + myContent ).length;
            setTimeout(function () {
                input.focus();
                input.setSelectionRange(currentPosition, currentPosition);
            }, 0);
        }
Другие вопросы по тегам