1

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

有没有办法在正确的地方返回值?

4

1 回答 1

2

您可以使用 jQuery 在 textarea 中获取插入符号的位置,以确定用户想要粘贴文本的位置: Cursor position in a textarea (character index, not x/y 坐标)

然后将您的数据插入该位置。查看更新的小提琴: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)));
     }
于 2013-05-29T12:30:43.190 回答