Copy вместо Pust

  • Автор темы yu007
  • Дата начала
Y

yu007

#1
Суть скрипта в том, что при выделении текста в textarea появляется div с кнопками, при нажатии на которые выделенный текст вырезается и заносится в соответствующее кнопке поле.
Как изменить функцию cutTxt (function cutTxt) для третьей кнопки, чтобы она не вырезала выделенный текст, а копировала его?

код JS:
Код:
selObj = null;
var selTxtRng;
var coords = {x:0, y:0};
var selTxt = "";
function showDiv(sender) {
if (window.getSelection) {
selObj = {target: sender, start: sender.selectionStart, end: sender.selectionEnd};
selTxt = sender.value.slice(selObj.start, selObj.end);
// setTimeout("brake()", 10);
} else {
selObj = document.selection;
if (selObj == null) return true;
selTxtRng = selObj.createRange();
selTxt = selTxtRng.text;
}
var hintDiv = document.getElementById("hint");
with (hintDiv.style){
left = (selTxtRng) ? selTxtRng.offsetLeft + "px" : coords.x + "px";
top = (selTxtRng) ? (selTxtRng.offsetTop - -20).toString() + "px" : (coords.y - 35).toString() + "px";
display = "block";
sender.focus();
}
} //end function showDiv(sender)
function cutTxt(destInput) {
if (selObj.clear) {
selObj.clear();
} else {
selObj.target.value = selObj.target.value.slice(0, selObj.start) + selObj.target.value.slice(selObj.end);
}
delete selObj;
document.getElementById("hint").style.display = "none";
document.getElementById(destInput).value += selTxt.charAt(0).toUpperCase() + selTxt.slice(1);
selTxt = "";
} //end function cutTxt(destInput)
function storeCoords(evnt) {
var ev = (evnt) ? evnt : event;
coords.x = (ev.x) ? ev.x : ev.pageX;
coords.y = (ev.y) ? ev.y : ev.pageY;
}	//end function storeCoords(evnt)
function clickHandler(evnt) {
var ev = (evnt) ? evnt : event;
var sender = (ev.target) ? ev.target : ev.srcElement;
while (sender.parentNode != null) {
if (sender.id == "hint") return true;
sender = sender.parentNode;
}
document.getElementById("hint").style.display = "none";
}
if (window.addEventListener) {
window.addEventListener("mousedown", clickHandler, false);
} else {
window.document.attachEvent("onmousedown", clickHandler);
} //end function clickHandler(evnt)
код формы:
Код:
<input type="text" name="" id="selTxtInput1" /> 
<input type="text" name="" id="selTxtInput2" />
<input type="text" name="" id="selTxtInput3" />
<div id="hint" onmouseover="flag = true;" onmouseout="flag = false;">
<font class="popupmenu">ввести в поле:</font></br>
<center>
<input type="button" class="button2" value="Автор" onclick="cutTxt('selTxtInput1');" onMouseOver="style.color='#ffcc00'" onMouseOut="style.color='white'" /><br />
<input type="button" class="button2" value="Название" onclick="cutTxt('selTxtInput2');" onMouseOver="style.color='#ffcc00'" onMouseOut="style.color='white'" /><br />
<input type="button" class="button2" value="Ключевые слова" onclick="cutTxt('selTxtInput3');" onMouseOver="style.color='#ffcc00'" onMouseOut="style.color='white'" /><br />
</center>
</div>
код texarea:
PHP:
<?php
error_reporting(0);
if (isset($_FILES['upload']))
$upload=file_get_contents($_FILES['upload']['tmp_name']);
$out="<textarea onselect=\"showDiv(this);\" class=\"TxtPopUp\" onmouseup=\"storeCoords(event);\" rows=\"\" id=\"textGl\" name=\"TxtPopUp\" cols=\"\">";
if ($upload)
$out.=$upload."</textarea>";
else
$out.="</textarea>";
echo $out;
?>
 
A

Artem325

#2
Попробуйте убрать "delete selObj;" и напишите, получилось ли.
 
Y

yu007

#3
После удаления "delete selObj;", выделенные слова все равно вырезаются, но в текстовые поля не вставляются..
 
A

Artem325

#4
Тогда попробуйте удалить это: "if (selObj.clear) {
selObj.clear();
} else {
selObj.target.value = selObj.target.value.slice(0, selObj.start) + selObj.target.value.slice(selObj.end);
}
delete selObj;"
Методом "тыка" найдём лишние строки :KillMe: ))
 

hosm

* so what *
18.05.2009
2 442
6
#5
ребят, delete selObj; зачем убирать? это ж вызов деструктора.
нда, программирование методом тыка в потолок)
зы. скорее всего, угадали с if)))
 
Y

yu007

#7
Спасибо! Метод тыка себя оправдал)) Все получилось!