我已经创建了这个jsfiddle,试图解释我想要做什么
http://jsfiddle.net/nonyck/tyyCN/
$('.autoresize').bind('paste', function(e) {
e.preventDefault();
var data = e.originalEvent.clipboardData.getData('text');
if(data.match("http://.*?.(jpg|png|gif)")) {
$('.autoresize').val($('.autoresize').val() + "<image src='" + data + "' >");
} else {
$('.autoresize').val( $('.autoresize').val() + data);
}
});
我尝试的是获取粘贴事件,然后修改它并将其准确地返回到焦点的位置,atm这个例子只是将内容返回到最后。
因此,如果用户在第2行,并在那里粘贴一些内容,请将修改后的内容放在那里,而不是放在文档的末尾。
有没有办法在正确的位置返回值?
答案 0 :(得分:2)
您可以使用jQuery获取textarea中的插入位置,以确定用户想要粘贴文本的位置: Cursor position in a textarea (character index, not x/y coordinates)
然后将数据插入该位置。看到更新的小提琴: http://jsfiddle.net/tyyCN/1/
if(data.match("http://.*?.(jpg|png|gif)")) {
var caret = $(this).getCursorPosition();
var insert = "<image src='" + data + "' >";
var val = $('.autoresize').val();
$('.autoresize').val(val.substring(0, caret) + insert + val.substring(caret, (val.length)));
}