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);
}