ng-paste和onpaste,如何在粘贴新文本时保留/获取现有文本

时间:2017-06-11 15:30:58

标签: javascript angularjs ng-paste

我正在使用ng-pasteonpaste这样的

<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,还有什么想法?

P.S我必须使用onpaste="return false;",否则文字会变成<PASTED DATA><PASTED DATA>

1 个答案:

答案 0 :(得分:0)

你可以使用input元素的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);
        }