我正在使用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
,还有什么想法?
P.S我必须使用onpaste="return false;"
,否则文字会变成<PASTED DATA><PASTED DATA>
答案 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);
}