粘贴事件修改内容并将其返回到同一位置

时间:2013-05-29 12:12:35

标签: javascript jquery paste

我已经创建了这个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行,并在那里粘贴一些内容,请将修改后的内容放在那里,而不是放在文档的末尾。

有没有办法在正确的位置返回值?

1 个答案:

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