Обертка для blocquote
by kigorw
HTML
<script src="http://laboratorium.0xab.cd/jquery/fieldselection/0.1.0/jquery-fieldselection.js"></script>
<script src="http://www.developers.org.ua/media/js/lib/caret.js"></script>
<div id="article" style="margin-bottom:5px; border-bottom:1px dashed #ccc; padding-bottom:5px;">
Копируй меня. <p>Да-да-да, трололо</p>
</div>
И меня копируй, но не сработает
<div style="margin-top:10px">
<textarea style="width:100%; height:100px" id="txt">В это поле копируй</textarea>
</div>
JavaScript
var clip="", pasted, changed,
txt = $("#txt"),
val = txt.val();
$("#article").bind("copy",function(e){
clip = window.getSelection ? window.getSelection().toString() : document.selection.createRange().text;
});
txt.bind("paste", function(e) {
setTimeout(function(){
var changed = val!=txt.val();
if(changed&&clip!="") {
val = txt.val();
addQuote();
}
}, 10);
});
function addQuote() {
var end = txt.getSelection().end,//плагин jquery-fieldselection.js для получения позиции курсора
len = clip.length,
start = end-len,
val = txt.val();
//сверяем вставленный текст с тем, что было скопировано - защита от пастинга из других мест
if(val.substring(start, end).replace(/\s/g," ")!=clip.replace(/\s/g," ")) return;
var taged = "<blockquote>"+clip+"</blockquote>";
val = val.substring(0, start)+taged+val.substring(end, val.length);
txt.val(val);
//устанавливаем курсор в конец вставленного
txt.caret(start+taged.length, start+taged.length); //плагин range-caret
}