0

我正在使用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>

4

1 回答 1

0

您可以使用输入元素的 selectionStart/selectionEnd 属性来解决问题。

   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);
        }
于 2018-06-15T08:57:59.577 回答